我正在做一个项目,我必须做很多重复,如果我可以在for循环中处理多个对象,生活会容易得多。为了阐明我的问题,我想出一个(愚蠢的)例子
例如,如果这样做是为了创建我的数据:
for (i in 1:10)
{
assign(paste("Season",i, sep = ""),rnorm(10,0,1))
}
所以我有Season1,Season2,..,Season10。是否可以使用for循环将10个对象的第一个数目更改为零。半伪代码如下所示。但是,这当然行不通。
for (i in 1:10)
{
Seasoni[1]<-0
}
有人解决吗?
斯特凡
您问题的直接解决方案是get
与paste
for(i in 1:10)
{
Object = get(paste0("Season", i))
Object[1] = 0
assign(paste0("Season", i), Object)
}
但是不要这样。
R太可怕了。如注释中所建议,将结果存储在列表中:
Seasons = lapply(rep(10,10), rnorm) #Generate data
Seasons
然后应用函数:
Seasons = lapply(Seasons, replace, list=1, values=0)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句