Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Assign names to vector entries without assigning the vector a variable name?

Tags:

In R, is it possible to assign names to components of a vector without first assigning that vector to a variable name? The normal way is obviously:

z <- 1:3 names(z) <- c("a", "b", "c") #normal way names(1:3) <- c("a", "b", "c") #throws an error 

The second way throws "Error in names(1:3) <- c("a", "b", "c") : target of assignment expands to non-language object"

According to the doc, the expression is evaluated as

 z <- "names<-"(z,      "[<-"(names(z), 3, "c2"))’. 

So no shock it doesn't work, I'm just wondering if there's a work around.

Ideally, it'd be nice to have something like:

names(z <- 1:3) <- c("a", "b", "c") > z a b c  1 2 3  

Just seems like a waste of space to put that on two different lines.

like image 614
zzk Avatar asked Aug 02 '12 19:08

zzk


2 Answers

How about using setNames(), which seems even cleaner/clearer than your suggested ideal?

z <- setNames(1:3, c("a", "b", "c")) # z # a b c  # 1 2 3  
like image 69
Josh O'Brien Avatar answered Oct 02 '22 00:10

Josh O'Brien


Always thought this was a little cleaner, also don't need an additional package:

z <- c(a=1, b=2, c=3) # z # a b c  # 1 2 3  
like image 27
JHowIX Avatar answered Oct 01 '22 23:10

JHowIX