【发布时间】:2012-08-22 18:12:43
【问题描述】:
我想根据其中一个子列表元素的内容对子列表列表进行子集化,其方式类似于 subset 处理数据框的方式:
sublist1 <- list(data=rnorm(10), name="name1", keepMe=2)
sublist2 <- list(data=rnorm(10), name="name2", keepMe=2)
sublist3 <- list(data=rnorm(10), name="name3", keepMe=3)
myList <- list(s1=sublist1, s2=sublist2, s3=sublist3)
我想做类似keepers <- subset[myList, keepMe==2] 的操作,它会返回一个长度为 2 的列表。
以下是几乎我想要的:
require(plyr)
selector <- function(x) {
if (x$keepMe==2) {return(x)}
else {return(NULL)}
}
keepers <- llply(myList, selector)
除了在这种情况下不需要的列表元素不会被丢弃,它们只是被NULL替换。
请注意,在所有情况下,子列表都将具有相同的组件,只有组件的值会发生变化。
【问题讨论】:
标签: r