Quelqu'un pourrait-il m'expliquer pourquoi cela n'imprime pas tous les nombres séparément dans R.
numberstring <- "0123456789"
for (number in numberstring) {
print(number)
}
Les chaînes ne sont-elles pas juste des tableaux de caractères? Quel est le moyen de le faire en R?
En R, "0123456789"
est un vecteur de caractères de longueur 1.
Si vous souhaitez parcourir les caractères, vous devez fractionner la chaîne en un vecteur de caractères uniques à l'aide de strsplit
.
numberstring <- "0123456789"
numberstring_split <- strsplit(numberstring, "")[[1]]
for (number in numberstring_split) {
print(number)
}
# [1] "0"
# [1] "1"
# [1] "2"
# [1] "3"
# [1] "4"
# [1] "5"
# [1] "6"
# [1] "7"
# [1] "8"
# [1] "9"
Juste pour le plaisir, voici quelques autres façons de diviser une chaîne à chaque caractère.
x <- "0123456789"
substring(x, 1:nchar(x), 1:nchar(x))
# [1] "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
regmatches(x, gregexpr(".", x))[[1]]
# [1] "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
scan(text = gsub("(.)", "\\1 ", x), what = character())
# [1] "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
Votre question n’est pas claire à 100% quant au résultat souhaité (imprimez chaque caractère séparément d’une chaîne ou stockez chaque nombre de manière à ce que la boucle d’impression donnée produise chaque nombre sur sa propre ligne). Pour stocker des nombres tels qu’ils s’impriment en utilisant la boucle que vous avez incluse:
numberstring<-c(0,1,2,3,4,5,6,7,8,9)
for(number in numberstring){print(number);}
[1] 0
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
>