Disons que j'ai un data.frame, comme ceci:
x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame("Label 1"=x,"Label 2"=rnorm(100))
tête (df, 3)
résultats:
Label.1 Label.2
1 1 1.9825458
2 2 -0.4515584
3 3 0.6397516
Comment faire pour que R cesse de remplacer automatiquement l'espace par un point dans le nom de la colonne? c'est-à-dire "Label 1" au lieu de "Label.1".
Vous pas.
Avec l’espace que vous souhaitez, le format ne satisferait pas aux exigences relatives à un identifiant qui apparaît lorsque vous utilisez df$column.1
- qui ne peut pas gérer un espace. Alors voyez la fonction make.names()
pour plus de détails ou un exemple:
> make.names(c("Foo Bar", "tic tac"))
[1] "Foo.Bar" "tic.tac"
>
Vous pouvez définir check.names = FALSE
dans data.frame
(ainsi que dans read.table
):
df <- data.frame("Label 1" = 1:3, "Label 2" = rnorm(3), check.names = FALSE)
résultats:
Label 1 Label 2
1 1 0.2013347
2 2 1.8823111
3 3 -0.5233811
De ?data.frame
:
check.names
logique. SiTRUE
, les noms des variables du bloc de données sont vérifiés afin de s'assurer qu'ils sont des noms de variable syntaxiquement corrects et qu'ils ne sont pas dupliqués. Si nécessaire, ils sont ajustés (parmake.names
) afin qu'ils le soient.
De ?make.names
:
Un nom syntaxiquement valide se compose de lettres, de chiffres et du point ou des caractères soulignés et commence par une lettre ou un point non suivi d'un chiffre. Des noms tels que ".2way" ne sont pas valides, pas plus que les mots réservés.
Tous les caractères non valides sont traduits en "
.
"
De même, si vous devez sous-définir une variable avec un nom 'non valide' à l'aide de $
, vous pouvez utiliser des backticks `
. Par exemple:
df$`Label 1`
Vous pouvez modifier un nom de cadre de données existant pour qu'il contienne des espaces, par exemple en utilisant votre exemple.
x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame("Label 1"=x,"Label 2"=rnorm(100))
colnames(df) <- c("Label 1", "Label 2")
head(df, 3)
résultats
Label 1 Label 2
1 1 0.2013347
2 2 1.8823111
3 3 -0.5233811
et vous pouvez toujours accéder aux colonnes en utilisant l'opérateur $, il vous suffit d'utiliser des guillemets doubles, par exemple
df$"Label 2"[1:3]
résultats
[1] 0.2013347 1.8823111 -0.5233811
Il me semble plutôt incohérent de convertir automatiquement les noms de colonne lors de la création de data.frame, mais de ne pas procéder de la même manière lors de la modification du nom de colonne, mais que R fonctionne actuellement.
names(df)<-c('Label 1','Label 2)