如何拆分data.frame列表并将函数应用于一列?

Tal*_*ali 5 r list lapply dataframe

关于应用函数,我有一个小问题.例如,我有:

l <- list(a = data.frame(A1=rep(10,5),B1=c(1,1,1,2,2),C1=c(5,10,20,7,30)),
          b = data.frame(A1=rep(20,5),B1=c(3,3,4,4,4),C1=c(3,5,10,20,30)))
Run Code Online (Sandbox Code Playgroud)

我想为每个B1找到最小C1.结果应该是

$a
  A1 B1 C1
  10  1  5
  10  2  7

$b
  A1 B1 C1
  20  3  3
  20  4  10
Run Code Online (Sandbox Code Playgroud)

我知道如何使用'for'来实现它,但它必须是'lapply'更简单的方法,但我无法使它工作.

请帮忙

A5C*_*2T1 2

这是另一种符合您所需输出的方法:

lapply(l, function(x) {
  temp <- ave(x[["C1"]], x["B1"], FUN = min)
  x[x[["C1"]] == temp, ]
})
# $a
#   A1 B1 C1
# 1 10  1  5
# 4 10  2  7
# 
# $b
#   A1 B1 C1
# 1 20  3  3
# 3 20  4 10
Run Code Online (Sandbox Code Playgroud)