如何分配名称为字符串的R对象的子集

时间:2015-03-04 09:55:54

标签: r subset assign

我将矩阵的名称作为字符串,并希望分配给该矩阵的列。

A <- matrix(1:4,2)
v <- 10:11
name <- "A"
get(name)[,2] <- v

这不起作用,因为LHS只是一个值(即矢量),并且已经失去了&#34; A&#34;的第二列的含义。

eval(parse(text=paste0(name,'[,2]<- v')))

这可以胜任,但很多人不鼓励使用这种结构。建议的方法是什么?

修改: 我发现的类似问题的大多数评论都不鼓励使用只能作为字符串传递的对象名称,而是促进列表的使用,即

l <- list(A=matrix(1:4,2))
v <- 10:11
name <- "A"
l[[name]][,2] <- v

但这并没有真正回答我的问题。

1 个答案:

答案 0 :(得分:0)

要更改列的名称,您应该处理data.frame而不是矩阵:

A <- matrix(1:4,2)
v <- 10:11
name <- "A"

A <- as.data.frame(A)
v <- as.data.frame(v)
colnames(A)[2] <- name
A[,2] <- v

这是你在找什么?