我有一个数据帧列表(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必须在循环之外,但这不是问题。
我做错了什么?
谢谢!
答案 0 :(得分:5)
我认为您需要将for (i in length(subspec2))
更改为for (i in 1:length(subspec2))
。前者只进行1次迭代,其中i = length(subspec2)
,而后者迭代多次i
。
(我很确定这是你的问题,但有一点很重要的事情就是创建一个可重现的示例,这样我就可以运行你的代码来仔细检查,例如我不确定是什么{{ 1}}看起来,我无法按原样运行您的代码,这是reprex包的一个很好的资源。