r - 将函数应用于 R 中嵌套列表的某些元素

标签 r list apply do.call

我希望只对嵌套列表的某些元素应用一个函数

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/

相关文章:

r - tidyr::complete 带有可变长度的列名向量

按月在 xts 中滚动计算

java - 将多个 .doc 合并到一个 .csv 中

r - 我可以在 R markdown 中删除方程式中的文本吗

c++ - 如果具有相同的名称,则返回列表元素的指针

c++ - 从链表的末尾而不是从头开始读取值 C++

缓冲到文件的 Python 类列表对象?

python - 当有多个规范时,在 Pandas 中优化计算的最佳做法是什么?

r - 使用 data.table 加速 rollapply

r - 在 R 中,如何将 data.tree 图保存到文件中?