R将不同的函数映射到嵌套列表

时间:2019-07-19 18:19:39

标签: r list nested mapply

使用基数R,我想将 different 函数应用于嵌套列表的每个元素。我知道如何使用

same 函数应用于嵌套列表
  

lapply(列表,lapply,函数)。

但是,我正在寻找一种将 different 函数应用于每个元素的优雅方法。下面的代码有效,但我发现使用

  

function(x)lapply(x,function(x))

很难看,所以我希望有一个更优雅的解决方案。

Data <- list(
    Panel1 = list(
        DF1 = data.frame(A = rnorm(10), B = rnorm(10)),
        DF2 = data.frame(A = rnorm(10), B = rnorm(10))
    ),
    Panel2 = list(
        DF1 = data.frame(C = rnorm(10), D = rnorm(10)),
        DF2 = data.frame(C = rnorm(10), D = rnorm(10))
        )
)

Fns <- list(
    function(x) lapply(x, function(x) x[1:5, c("B", "A")]),
    function(x) lapply(x, function(x) x[1:5, c("D", "C")])
)

Map(function(a, b) b(a), Data, Fns)

1 个答案:

答案 0 :(得分:0)

好的,我想我可以回答自己的问题。这行得通,我认为这与使用基数R一样简单。

Data <- list(
    Panel1 = list(
        DF1 = data.frame(A = rnorm(10), B = rnorm(10)),
        DF2 = data.frame(A = rnorm(10), B = rnorm(10))
    ),
    Panel2 = list(
        DF1 = data.frame(C = rnorm(10), D = rnorm(10)),
        DF2 = data.frame(C = rnorm(10), D = rnorm(10))
    )
)

Fns <- list(
    function(x) x[1:5, c("B", "A")],
    function(x) x[1:5, c("D", "C")]
)

Map(function(a, b) lapply(a, b), Data, Fns)