循环用于检查和存储数据帧之间的最小值

时间:2015-12-10 08:35:03

标签: r loops min

我有两个数据帧。 Dataframe X有2列(k,l)和15行。数据框Y有1行,具有相同的列。

 X
          k  l
1  17455432  1
2  16590126  2
3  14090453  3
4  20538871  4
5  20935544  5
6  21896196  6
7  14173206  7
8  20193468  8
9  20751149  9
10 23956919 10
11 11295749 11
12 22356733 12
13 20005475 13
14 20035158 14
15  9602016 15

Y
         k l
1  

我希望通过一个循环来保存具有最小值的行" k"将df X转换成df Y.我试过了:

for (s in 1:15){
  if (s==1){
             Y=X[s,1:2] 
           }else{
             if (X$k[s]>X$k[s-1]){
               Y=X[s-1,1:2] 
             }

           }
}

但这对我不起作用。如何每次检查值k并保持行的最小值k为df Y?在第一次迭代时,我的Y将是X的第一行,但后来我想将值与前者进行比较,如果值小于前一个则保留行。

1 个答案:

答案 0 :(得分:2)

对于这个(以及许多其他的)简单操作,R中不需要任何循环。试试吧:

Y<-X[which.min(X$k),]
#         k  l
#15 9602016 15

which.min函数为索引提供最小值。您可以使用它来将X作为您的请求进行分组。