假设我有一个列表preds
,其中包含基于唯一模型的3组不同的预测。
set.seed(206)
preds <- list(rnorm(1:100), rnorm(1:100), rnorm(1:100))
我无法遍历列表并创建新列表。我想要一个由其他向量中的相应索引组成的新向量列表。因此,例如,我可以使用sapply()
获取列表的每个向量中的第一个元素,如下所示:
sapply(preds, "[[", 1)
哪个效果很好,但我无法弄清楚如何遍历每个向量中的每个元素来构造一个新列表。我想要这样的东西(不起作用):
sapply(preds, "[[", 1:100)
使用上面的种子和preds
列表,我想要的输出类似于:
first_element <- sapply(preds, "[[", 1)
second_element <- sapply(preds, "[[", 2)
third_element <- sapply(preds, "[[", 3)
desired_result <- rbind(first_element, second_element, third_element)
但对于列表中的所有元素,在此示例中为100.
如果不清楚,请告诉我,我感谢您的帮助!
答案 0 :(得分:4)
我们需要使用[
res <- sapply(preds, `[`, 1:3 )
all.equal(res, desired_result, check.attributes=FALSE)
#[1] TRUE
答案 1 :(得分:1)
这是另一种方法:
~/Content/kendo/css
借用akrun的支票代码:
nth_element <- function(dat, n){
res <- sapply(dat, "[[", n)
res
}
res2 <- do.call(rbind, lapply(c(1:3), function(x) nth_element(dat = preds, n = x)))