对于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
的参数
尝试在分配时执行此操作(例如lists
或data.frames
)也不起作用:
v <- c("a"=1) # error
是否可以同时分配数据和矢量名称?
答案 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