仅保存循环的最后一次迭代

0 for-loop r

我有一个数据框列表(subspec2),我想循环遍历这些数据框以从每个数据框中获取具有最大值的列,并将它们写入新的数据框。我编写了以下循环:

good.data<-data.frame(matrix(nrow=401, ncol=78)) #create empty dataframe

for (i in length(subspec2)) ##subspec2 is the list of dataframes

{

max.name<-names(which.max(apply(subspec2[[i]],MARGIN=2,max))) #find column name with max value
good.data[,i]<-subspec2[[i]][max.name] #write the contents of this column into dataframe

}
Run Code Online (Sandbox Code Playgroud)

这似乎可行,但仅返回最后一列中的值,其他似乎没有保存。许多线程指出df必须在循环之外,但这不是这里的问题。

我究竟做错了什么?

谢谢!

Luc*_*ucy 6

相信您需要更改for (i in length(subspec2))for (i in 1:length(subspec2))。前者只会执行1次迭代,i = length(subspec2)而后者会在多个is上进行迭代。

(我很确定这是您的问题,但是要做的一件好事是创建一个可重现的示例,这样我就可以运行您的代码进行仔细检查,例如,我不确定该是什么subspec2样,并且我无法要按原样运行代码,reprex程序包是一个很好的资源。