在实例化时为向量分配名称

时间:2013-11-02 01:44:54

标签: r vector

对于R中的大多数基础数据结构,可以同时分配值和名称。例如:

l <- list(a=1:3, b=4)
m <- matrix(1:9, 3, 3, dimnames=list(letters[1:3], letters[1:3]))
d <- data.frame(a=1:5, b=letters[1:5], c=rnorm(5))

但是对于矢量而言,这是不同的。据我所知,向names提供向量的唯一方法是:

v <- 1:3
names(v) <- letters[1:3]

c没有允许您在实例化时指定names的参数 尝试在分配时执行此操作(例如listsdata.frames)也不起作用:

v <- c("a"=1)  # error

是否可以同时分配数据和矢量名称?

3 个答案:

答案 0 :(得分:4)

正如Joshua Ulrich在评论中所说,正确的答案是使用setNames

v <- setNames(1:2, letters[1:2])

我在原始问题中也是错误的:v <- c("a"=1)有效,但延长它是非常繁琐的:v <- c("a"=1, "b"=2, ...)

答案 1 :(得分:3)

另一个(丑陋的)解决方案是使用structure()

v <- structure(1:3, .Names = c("a", "b", "c"))

(我通过查看dput(v)之后的结果来到这里 让它变得艰难。)

答案 2 :(得分:-1)

我不确定我是否理解正确,但也许这就是你要找的东西:

for (n in 1:6) assign(x=letters[n], value=n)

产生

> a
[1] 1
> b
[1] 2
> c
[1] 3
> d
[1] 4
> e
[1] 5
> f
[1] 6