对于 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))
Run Code Online (Sandbox Code Playgroud)
然而对于向量来说这是不同的。据我所知,赋予names向量的唯一方法是之后:
v <- 1:3
names(v) <- letters[1:3]
Run Code Online (Sandbox Code Playgroud)
c没有允许您指定namesat 实例化的参数。
尝试在分配时执行此操作(例如 inlists或data.frames)也不起作用:
v <- c("a"=1) # error
Run Code Online (Sandbox Code Playgroud)
是否可以同时分配向量的数据和名称?
正如 Joshua Ulrich 在评论中回答的那样,正确的答案是使用setNames:
v <- setNames(1:2, letters[1:2])
Run Code Online (Sandbox Code Playgroud)
我原来的问题也是不正确的:v <- c("a"=1)有效,但是扩展它是相当乏味的:v <- c("a"=1, "b"=2, ...)。