Используя базовый R, я хотел бы применить другую функцию к каждому элементу вложенного списка. Я знаю, как применить такую же функцию к вложенному списку с
lapply (список, lapply, функция).
Однако я ищу элегантный способ применить разные функции к каждому элементу. Приведенный ниже код работает, но я нахожу использование
функция (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)
?compose
в пакетеpurrr
может быть полезна в вашем случае. - person Chuan   schedule 19.07.2019Map
уродливым? - person Rui Barradas   schedule 19.07.2019lapply(1:2,function(f){ funx <- Fns[[f]] funx(Data[[f]]) })
- person Mike   schedule 19.07.2019