为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2019-11-11 15:38:24
见下文: paste("perf.a", "1", sep="")    [1] "perf.a1"如果我要给赋值perf.a1怎么办?我尝试了as.name,as.symbol等等,但无济于事:as.name(paste("perf.a", "1", sep="")) = 5Error in as.name(paste("perf.a", "1", sep = "")) = 5 :   target of assignment expands to non-language objectas.symbol(paste("perf.a", "1", sep="")) = 5Error in as.symbol(paste("perf.a", "1", sep = "")) = 5 :   target of assignment expands to non-language objectnoquote(paste("perf.a", "1", sep="")) = 5Error in noquote(paste("perf.a", "1", sep = "")) = 5 :   target of assignment expands to non-language object
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超5个赞

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


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

> perf.a1

[1] 5


查看完整回答
反对 回复 2019-11-11
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

请参阅?assign。


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

> tra.1

  [1] 5


查看完整回答
反对 回复 2019-11-11
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

在我的情况下,我创建的符号(Tax1,Tax2等)已经具有值,但是我想使用循环并将符号分配给另一个变量。因此,以上两个答案给了我实现此目标的方法。这可能有助于回答您的问题,因为可以在以后随时进行值的分配。


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)

}


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 1477 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信