Dans R, est-il possible d'attribuer des noms aux composants d'un vecteur sans d'avoir d'abord attribué ce vecteur à un nom de variable? La voie normale est évidemment:
z <- 1:3
names(z) <- c("a", "b", "c") #normal way
names(1:3) <- c("a", "b", "c") #throws an error
La deuxième façon lance "Erreur dans les noms (1: 3) <- C (" A "," B "," C "): la cible de la mission se développe à un objet non linguistique"
Selon le doc, l'expression est évaluée comme
z <- "names<-"(z,
"[<-"(names(z), 3, "c2"))’.
Donc, aucun choc, cela ne fonctionne pas, je me demande simplement s'il y a un travail autour.
Idéalement, ce serait bien d'avoir quelque chose comme:
names(z <- 1:3) <- c("a", "b", "c")
> z
a b c
1 2 3
Semble juste comme un gaspillage d'espace pour mettre cela sur deux lignes différentes.
Que diriez-vous d'utiliser setNames()
, qui semble encore plus propre/plus claire que votre idéal suggéré?
z <- setNames(1:3, c("a", "b", "c"))
# z
# a b c
# 1 2 3
Toujours pensé que c'était un peu plus propre, je n'ai pas non plus besoin d'un paquet supplémentaire:
z <- c(a=1, b=2, c=3)
# z
# a b c
# 1 2 3