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.
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
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With