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

R Map differing functions to nested list

使用 base R,我想对嵌套列表的每个元素应用 不同的 函数。我知道如何将 same 函数应用于

的嵌套列表

lapply(list, lapply, function).

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

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)

好的,我想我可以回答我自己的问题了。这行得通,我认为它就像使用 base 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)