在R中用“粘贴”创build一个variables名?

见下文:

paste("perf.a", "1", sep="") [1] "perf.a1" 

如果我想为perf.a1赋值,该perf.a1办?

我试图as.nameas.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 

您可以使用assign ( doc )来更改perf.a1的值:

 > assign(paste("perf.a", "1", sep=""),5) > perf.a1 [1] 5 

?assign

 > assign(paste("tra.", 1, sep = ""), 5) > tra.1 [1] 5 

在我的情况下函数eval()工作非常好。 下面我生成10个variables,并赋予它们10个值。

 lhs <- rnorm(10) rhs <- paste("perf.a", 1:10, "<-", lhs, sep="") eval(parse(text=rhs)) 

在我的情况下,我创build的符号(Tax1,Tax2等)已经有值,但我想使用一个循环,并将符号分配给另一个variables。 所以上面的两个答案给了我一个方法来完成这个。 这可能有助于回答您的问题,因为值的分配可以在以后的任何时间进行。

 output=NULL for(i in 1:8){ Tax=eval(as.symbol(paste("Tax",i,sep=""))) L_Data1=L_Data_all[which(L_Data_all$Taxon==Tax[1] | L_Data_all$Taxon==Tax[2] | L_Data_all$Taxon==Tax[3] | L_Data_all$Taxon==Tax[4] | L_Data_all$Taxon==Tax[5]),] L_Data=L_Data1$Length[which(L_Data1$Station==Plant[1] | L_Data1$Station==Plant[2])] h=hist(L_Data,breaks=breaks,plot=FALSE) output=cbind(output,h$counts) }