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)
使用 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)