有谁知道在 R 中裁剪多级列表的方法?我的列表中的每个元素都有几个级别(例如属性“alive”、“age”、“color”)。我想裁剪列表以仅包含以下元素x$color=="blue"
:
例子
set.seed(1)
ind <- vector(mode="list", 20)
for(i in seq(ind)){
ind[[i]]$alive <- 1
ind[[i]]$age <- 0
ind[[i]]$color <- c("blue", "red")[round(runif(1)+1)]
}
keep <- which(sapply(ind, function(x) x$color) == "blue")
keep
#[1] 1 2 5 10 11 12 14 16 19
ind[[keep]] # doesn't work
#Error in ind[[keep]] : recursive indexing failed at level
NULL
对于具有单个级别的列表,裁剪或设置为似乎是可能的,如以下答案所示,但不适用于我的多级列表。