1

对于 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没有允许您指定namesat 实例化的参数。
尝试在分配时执行此操作(例如 inlistsdata.frames)也不起作用:

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

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

4

3 回答 3

4

正如 Joshua Ulrich 在评论中回答的那样,正确的答案是使用setNames

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

我最初的问题也是不正确的:v <- c("a"=1)有效,但是扩展它非常乏味:v <- c("a"=1, "b"=2, ...).

于 2013-11-02T12:23:02.193 回答
3

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

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

(我是通过查看dput(v)艰难的方式之后的结果来到这里的。)

于 2013-11-02T14:44:08.050 回答
-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
于 2013-11-02T11:17:36.333 回答