Character

Les vecteurs de caractères (character) contiennent du texte sachant que, comme j'ai déjà eu l'occasion de vous le signaler, tout ce qui se trouve entre des doubles guillemets est du texte.

C’est le cas de alpha que je vous propose de recréer comme suit :

alpha <- tail(LETTERS, 15)

(De la même manière que letters contient l’alphabet latin en minuscules, LETTERS contient l’alphabet latin en majuscules.)

> alpha 
 [1] "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"

Dans cet exemple, chaque élément de alpha est composé d’un seul et unique caractère :

> nchar(alpha) 
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Ce qui n’est absolument pas obligatoire :

> test <- c("mon", "nom", "est", "personne")
> test
[1] "mon"      "nom"      "est"      "personne"
> nchar(test)
[1] 3 3 3 8

Évidemment, vous ne pouvez pas sommer du texte mais certaines fonctions qui fonctionnent pour les vecteurs numériques fonctionnent aussi pour les vecteurs de texte :

> rev(test)
[1] "personne" "est"      "nom"      "mon"

Une fonction très utile avec les vecteurs de texte, c’est la fonction paste :

> paste(test, collapse = " ")
[1] "mon nom est personne"

Ou, pour parler comme un maître Jedi bien connu :

> paste(test[c(4, 1, 2, 3)], collapse = " ")
[1] "personne mon nom est"

Et puis tant qu’à faire :

> x <- paste(test[c(4, 3, 1, 2)], collapse = " ")
> gsub("personne", "Yoda", x)
[1] "Yoda mon nom est"

Avec la liste des noms de couleurs :

> col <- colors()
> col
  [1] "white"                "aliceblue"            "antiquewhite"        
  [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"       
  [7] "antiquewhite4"        "aquamarine"           "aquamarine1"         
 [10] "aquamarine2"          "aquamarine3"          "aquamarine4"         
 [13] "azure"                "azure1"               "azure2"              
 [16] "azure3"               "azure4"               "beige"               
 [19] "bisque"               "bisque1"              etc...
> class(col)
[1] "character"

On peut utiliser grep pour trouver la position de ceux qui contiennent blue :

> grep("blue", col)
 [1]   2  26  27  28  29  30  31  42  43  44  45  46  62  73 107 121 122 123
[19] 124 125 128 129 130 131 132 399 400 401 402 403 430 431 432 433 434 435
[37] 438 439 440 441 442 461 473 477 491 546 562 563 564 565 566 589 590 591
[55] 592 593 594 595 596 597 598 615 616 617 618 619

Ce qui permet de récupérer les noms en indiçant col :

> col[grep("blue", col)]
 [1] "aliceblue"       "blue"            "blue1"           "blue2"          
 [5] "blue3"           "blue4"           "blueviolet"      "cadetblue"      
 [9] "cadetblue1"      "cadetblue2"      "cadetblue3"      "cadetblue4"     
[13] "cornflowerblue"  "darkblue"        "darkslateblue"   "deepskyblue"    
[17] "deepskyblue1"    "deepskyblue2"    "deepskyblue3"    "deepskyblue4"   
[21] "dodgerblue"      "dodgerblue1"     "dodgerblue2"     "dodgerblue3"    
[25] "dodgerblue4"     "lightblue"       "lightblue1"      "lightblue2"     
[29] "lightblue3"      "lightblue4"      etc...

Et ce ne sont que quelques exemples…

Comme nous l’avons vu, une des grandes utilités des vecteurs de texte, c’est de nous permettre de donner des noms aux autres vecteurs :

> x <- 1:5
> names(x) <- c("un", "deux", "trois", "quatre", "cinq")
> x
    un   deux  trois quatre   cinq 
     1      2      3      4      5
> x["deux"] * x["trois"]
deux 
   6

(Notez que le résultat a hérité du nom du premier élément de notre multiplication.)

Aucun commentaire:

Enregistrer un commentaire