【发布时间】:2016-02-21 16:33:32
【问题描述】:
我想从循环中将计算值添加到现有向量,在该循环中从循环中调用所需向量。我正在寻找一些类似于 assign() 函数的函数,但这将使我能够将值添加到现有变量而不是创建新变量。
示例: 说我有 3 个变量:
sp=3
for(i in 1:sp){
name<-paste("sp",i,sep="")
assign(name,rnorm(5))
}
现在我想访问每个变量中的最后一个值,将其加倍并将结果添加到向量中:
for(i in 1:sp){
name<-paste("sp",i,sep="")
name[6]<-name[5]*2
}
这里的问题是“name”是一个字符串,R如何将其识别为可验证的名称并访问它?
【问题讨论】:
-
只有非常高级的 R 程序员才应该使用
assign。看起来你还没有在那里。对于使用assign的初学者来说,总是可以替代他们的方法。例如,如果您使用列表来保存所有内容而不是在工作区中创建一堆对象,这将非常容易。 -
谢谢罗纳德,但这只是一个例子,在这里打印我的整个巨大代码没有用,所以这是我需要的一个例子我认为分配非常好,因为我的代码是由许多变化的变量组成,这些变量并非都是预先知道的
-
这并不意味着我的评论不适用于您的情况。我认为自己对 R 非常有经验,而且我几乎从不使用
assign。 -
@etienne 这点有用....
-
assign(name,c(eval(as.symbol(name)),eval(as.symbol(name))[5]*2))之类的东西如果你把它放在名称分配之后的第二个循环中就可以了。但你不应该使用它。
标签: r loops variable-assignment dynamic-programming