我希望只对嵌套列表的某些元素应用一个函数
l <- list()
l$a$forecast <- rnorm(3)
l$a$model <- "arima"
l$b$forecast <- rnorm(3)
l$b$model <- "prophet"
期望的输出是这样的: 将求和函数应用于列表的 $forecast 元素
fcst <- c(sum(l$a$forecast),sum(l$b$forecast))
mdl <- c(l$a$model,l$b$model)
df <- data.frame(fcst,mdl)
我试过这样的:
df <- lapply(l$forecast, function(x) sum(x))
df <- do.call(rbind, Map(cbind, sku = names(df)))
最佳答案
在 rrapply
包中使用 rrapply()
的另一种方法与 dplyr 的 bind_rows()
相结合。这也扩展到包含更深嵌套级别的列表。
rrapply::rrapply(l, condition = function(x, .xname) .xname == "forecast", f = sum) %>%
dplyr::bind_rows()
#> # A tibble: 2 x 2
#> forecast model
#> <dbl> <chr>
#> 1 -1.28 arima
#> 2 1.10 prophet
数据
set.seed(1)
l <- list(
a = list(forecast = rnorm(3), model = "arima"),
b = list(forecast = rnorm(3), model = "prophet")
)
关于r - 将函数应用于 R 中嵌套列表的某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64448458/