【发布时间】:2014-08-13 10:55:50
【问题描述】:
在循环中使用 plyr 时,我发现了一个奇怪的问题。 我想用这个脚本执行的是用不同的输入值(由 for 循环提供)迭代 plyr 函数并将结果存储为 data.frames 列表。
k=as.factor(c(rep("a",2), rep("b",2), rep("c",2), rep("d",2), rep("e",2)))
indata=data.frame(k)
outdata<-list()
for (i in 1:10){
tempdata<-ddply(.data = indata, .variables = .(k), .fun = summarize, i=i)
data[[i]]<-tempdata
rm(tempdata)
}
data
我希望它生成一个 data.frames 列表,每个数据帧都在循环的单次迭代中生成,因此是循环变量的单个值。 相反,每个 data.frames 看起来都是一样的,每一行都有一个循环变量的顺序值。
将循环变量存储到一个单独的变量中可以使其工作,但似乎是一种尴尬的解决方法。
k=as.factor(c(rep("a",2), rep("b",2), rep("c",2), rep("d",2), rep("e",2)))
indata=data.frame(k)
outdata<-list()
for (i in 1:10){
z=i
tempdata<-ddply(.data = indata, .variables = .(k), .fun = summarize, i=i, z=z)
data[[i]]<-tempdata
rm(tempdata)
}
data
对导致这种奇怪行为的原因有什么想法吗?
【问题讨论】: