根据最大列值从列表中选择数据帧

时间:2016-08-17 20:47:18

标签: r list dataframe

我有一个列表x2有两个数据帧,x和x1。两者都有4列:n,m,l和k。我想选择列k具有最大最后值的数据帧。

在下面的示例中,我希望选择数据帧2nd,因为列K中的最后一个值大于数据帧1的列K中的最后一个值。

x <- data.frame(n = c(2, 13, 5),m = c(2, 23, 6),l = c(2, 33, 7),k = c(2, 43, 8))
x1 <- data.frame((n = c(2, 3, 15),m = c(2, 3, 16),l = c(2, 3, 17),k = c(2, 3, 18))
x2<-list(x,x1)

2 个答案:

答案 0 :(得分:1)

if(x$k[length(x$k)] >= x1$k[length(x1$k)]) x else x1

if语句在哪里 x$k[length(x$k)] - 获取矩阵x

列k的最后一个元素
   n  m  l  k
1  2  2  2  2
2  3  3  3  3
3 15 16 17 18

答案 1 :(得分:1)

使用lapply,循环浏览x2列表,并获取该数据框的k列的最后一个值。使用which.max,找到具有上一个lapply命令最大值的索引,并从x2

中提取该数据帧

注意:此代码不考虑k列的最后一个值的关系。

x2[which.max(lapply(x2, function(x) tail(x$k, 1)))]

# [[1]]
#    n  m  l  k
# 1  2  2  2  2
# 2  3  3  3  3
# 3 15 16 17 18