我有一个列表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)
答案 0 :(得分:1)
if(x$k[length(x$k)] >= x1$k[length(x1$k)]) x else x1
if语句在哪里
x$k[length(x$k)]
- 获取矩阵x
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