web-dev-qa-db-fra.com

Attribuer des noms aux entrées de vecteur sans attribuer le vecteur un nom de variable?

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.

24
zzk

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 
43
Josh O'Brien

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 
4
JHowIX