用R中的“ paste”创建一个变量名?

见下文:


 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


炎炎设计
浏览 1481回答 3
3回答

杨魅力

您可以使用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

小唯快跑啊

在我的情况下,我创建的符号(Tax1,Tax2等)已经具有值,但是我想使用循环并将符号分配给另一个变量。因此,以上两个答案给了我实现此目标的方法。这可能有助于回答您的问题,因为可以在以后随时进行值的分配。output=NULLfor(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)}
打开App,查看更多内容
随时随地看视频慕课网APP