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

时间:2017-10-25 19:24:34

标签: r for-loop

我有一个数据帧列表(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

}

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

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:5)

我认为您需要将for (i in length(subspec2))更改为for (i in 1:length(subspec2))。前者只进行1次迭代,其中i = length(subspec2),而后者迭代多次i

(我很确定这是你的问题,但有一点很重要的事情就是创建一个可重现的示例,这样我就可以运行你的代码来仔细检查,例如我不确定是什么{{ 1}}看起来,我无法按原样运行您的代码,这是reprex包的一个很好的资源。