【发布时间】:2016-04-19 06:42:05
【问题描述】:
我有一个包含更多列表的列表:
results <- sapply(c(paste0("cv_", seq(1:50)), "errors"), function(x) NULL)
## Locations for results to be stored
step_results <- sapply(c("myFit", "forecast", "errors"), function(x) NULL)
step_errors <- sapply(c("MAE", "MSE", "sign_accuracy"), function(x) NULL)
final_error <- sapply(c("MAE", "MSE", "sign_accuracy"), function(x) NULL)
for(i in 1:50){results[[i]] <- step_results}
for(i in 1:50){results[[i]][[3]] <- step_errors}
results$errors <- final_error
现在在整个结构中,我想总结sign_accuracy中的所有值并将它们保存在results$errors$sign_accuracy中
我也许可以用一个 for 循环来做到这一点,用 i 进行索引:
## This is just an example - it won't actually work!
sign_acc <- matrix(nrow = 50, ncol = 2)
for (i in 1:50){
sign_acc[i, ] <- `results[[i]][[3]][[3]]`
results$errors$sign_accuracy <- sign_acc
}
如果我没记错的话,在 Matlab 中有类似 list(:) 的东西,表示所有元素。 In Python我见过类似list(0:-1)的东西,也就是所有元素的意思。
什么是优雅的 R 等价物?我不太喜欢循环。
我见过methods using the apply 系列函数。使用 apply(data, "[[", 2) 之类的东西,但无法让它用于更深的列表。
【问题讨论】:
标签: r list indexing nested-lists lapply