Scinder et joindre
Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 3 sur 64.
strsplit(x, split) découpe une chaîne à chaque séparateur. Elle renvoie une liste contenant un vecteur de caractères par chaîne d’entrée. Utilisez donc [[1]] pour obtenir les éléments d’une seule chaîne.
csv <- "red,green,blue"
parts <- strsplit(csv, ",")[[1]]
print(parts)
print(length(parts))Sortie :
[1] "red" "green" "blue"
[1] 3paste() fonctionne dans l’autre sens. Avec collapse, il joint les éléments d’un vecteur en une seule chaîne, avec le texte collapse entre eux. sep est placé entre les arguments, élément par élément.
words <- c("one", "two", "three")
print(paste(words, collapse = "-"))
print(paste(words, 1:3, sep = "_"))Sortie :
[1] "one-two-three"
[1] "one_1" "two_2" "three_3"Le texte saisi comporte souvent des espaces autour des séparateurs. trimws() supprime les espaces au début et à la fin de chaque élément :
raw <- " apples , pears,plums "
items <- trimws(strsplit(raw, ",")[[1]])
print(items)
print(paste(rev(items), collapse = " | "))Sortie :
[1] "apples" "pears" "plums"
[1] "plums | pears | apples"strsplit() sur un vecteur renvoie un élément de liste par chaîne, de sorte que chaque ligne d’entrée conserve ses propres éléments :
lines <- c("a,b", "c,d,e")
parts <- strsplit(lines, ",")
print(length(parts))
print(parts[[2]])Sortie :
[1] 2
[1] "c" "d" "e"Défi
FacileComplétez hashtags(line). La ligne contient des tags séparés par des virgules, éventuellement entourés d’espaces. Renvoyez une chaîne contenant chaque tag précédé de #, séparés par des espaces simples : r, data ,stats devient #r #data #stats.
Le code fourni lit la ligne et affiche la valeur renvoyée.
Essayez vous-même
hashtags <- function(line) {
# Écrivez votre code ici
line
}
# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(hashtags(input[1]), sep = "\n")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes en profondeur
Sous-chaînes avec substr()Mise en forme avec sprintf()Scinder et joindreRechercher dans les chaînesRemplacer du texteRécapitulatif - Créateur de nom d'utilisateur4Matrices
Créer des matricesIndexer des matricesRécapitulatifs des lignes et des colonnesArithmétique matricielleRécapitulatif - Plan de salle7La famille Apply
lapply et sapplyMap et mapplyFilter et FindReduceRécapitulatif - Pipeline de données10Structures de contrôle avancées
La fonction switch()ifelse() vectorisérepeat et breakFonctions récursivesRécapitulatif – Classificateur de notes2Recherches par clé-valeur
Recherches dans des vecteurs nommésVérifier les clésAjouter et supprimer des clésParcourir les nomsRécapitulatif - Bureau des stocks5Projet - Carnet de notes
Ajouter des élèvesEnregistrer les notes3Ensembles et comptage
Valeurs uniquesOpérations sur les ensemblesTests d’appartenanceCompter avec table()Récapitulatif - Invités à l’événement6Les fonctions comme valeurs
Fonctions anonymesPasser des fonctionsRetourner des fonctionsFermetures avec étatRécapitulatif - Règles de remise9Data Frames
Créer des Data FramesColonnes et lignesFiltrer les lignesAjouter et trierRécapitulatif - Rapport des ventes12Projet - Suivi des dépenses
Enregistrer les dépensesDépenses totalesEntraînez-vous par vous-même : Compilateur R en ligne