见下文:
paste("perf.a", "1", sep="")
[1] "perf.a1"
Run Code Online (Sandbox Code Playgroud)
如果我想分配值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
Run Code Online (Sandbox Code Playgroud)
lec*_*tif 112
您可以使用assign(doc)更改perf.a1的值:
> assign(paste("perf.a", "1", sep=""),5)
> perf.a1
[1] 5
Run Code Online (Sandbox Code Playgroud)
Rom*_*rik 15
见?assign.
> assign(paste("tra.", 1, sep = ""), 5)
> tra.1
[1] 5
Run Code Online (Sandbox Code Playgroud)
小智 8
在我的情况下,函数eval()工作得非常好.下面我生成10个变量并为它们分配10个值.
lhs <- rnorm(10)
rhs <- paste("perf.a", 1:10, "<-", lhs, sep="")
eval(parse(text=rhs))
Run Code Online (Sandbox Code Playgroud)