如下所示:
paste("perf.a", "1", sep="")
# [1] "perf.a1"
如果我想给perf.a1
赋值,该怎么办?
我尝试了as.name
、as.symbol
等,但都没有用:
as.name(paste("perf.a", "1", sep="")) = 5
# Error in as.name(paste("perf.a", "1", sep = "")) = 5 :
# target of assignment expands to non-language object
as.symbol(paste("perf.a", "1", sep="")) = 5
# Error in as.symbol(paste("perf.a", "1", sep = "")) = 5 :
# target of assignment expands to non-language object
noquote(paste("perf.a", "1", sep="")) = 5
# Error in noquote(paste("perf.a", "1", sep = "")) = 5 :
# target of assignment expands to non-language object
发布于 2011-04-01 16:54:55
您可以使用assign
(doc)来更改perf.a1的值:
> assign(paste("perf.a", "1", sep=""),5)
> perf.a1
[1] 5
发布于 2011-04-01 16:55:08
参见?assign
。
> assign(paste("tra.", 1, sep = ""), 5)
> tra.1
[1] 5
发布于 2015-08-13 12:27:30
在我的例子中,函数eval()工作得非常好。下面我将生成10个变量,并为它们分配10个值。
lhs <- rnorm(10)
rhs <- paste("perf.a", 1:10, "<-", lhs, sep="")
eval(parse(text=rhs))
https://stackoverflow.com/questions/5510966
复制相似问题