R - 如何从列表中的元素创建新列表?

R - How to create a new list from elements in a list?

假设我有一个列表 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。

如果不清楚,请告诉我,非常感谢您的帮助!

我们需要使用[

res <- sapply(preds, `[`, 1:3 )
all.equal(res, desired_result, check.attributes=FALSE)
#[1] TRUE

这是另一种方法:

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)))

借用akrun的校验码:

all.equal(res2, desired_result, check.attributes=FALSE)