R-如何根据条件向量子集存储在列表中的所有数据范围



这是我第一次在这里问一个问题,所以请告诉我是否需要改变自己的方式。我一直在寻找一段时间,但找不到我需要的东西。

我有3个数据范围的列表。它们具有相同的结构(变量),但观察值不相同。我想根据存储在矢量中的几个条件。

所以,如果我有5个条件,我需要获得列表中的3个数据范围中的每一个,这些数据范围的5个子集,因此总计15个。

例如:

df1 <-data.frame(replicate(3,sample(0:10,10,rep=TRUE)))
df2 <-data.frame(replicate(3,sample(0:10,7,rep=TRUE)))
df3 <-data.frame(replicate(3,sample(0:10,8,rep=TRUE)))
my_list <- list(df1, df2, df3)
conditions <- c(2, 5, 7, 4, 6)

我知道如何使用lapply

对其中一个条件进行子集
list_subset <- lapply(my_list, function(x) x[which(x$X1 == conditions[1]), ])

,但我想对向量条件下的所有值做到这一点。我希望这是有道理的。

再次陷入困境,这次是在条件下:

df1 <-data.frame(replicate(3,sample(0:10,10,rep=TRUE)))
df2 <-data.frame(replicate(3,sample(0:10,7,rep=TRUE)))
df3 <-data.frame(replicate(3,sample(0:10,8,rep=TRUE)))
my_list <- list(df1, df2, df3)
conditions <- c(2, 5, 7, 4, 6)
list_subset <- lapply(my_list, function(x) x[which(x$X1 == conditions[1]), ])
#One Way, Conditions on first list
list.of.list_subsets <- lapply(conditions,function(y){
  lapply(my_list, function(x) x[which(x$X1 == y), ])
})
#The other way around
list.of.list_subsets2 <- lapply(my_list,function(x){
  lapply(conditions, function(y) x[which(x$X1 == y), ])
})

一个选项是使用%in%过滤,然后是基于'x1'列

split
lapply(my_list, function(x) {x1 <- subset(x, X1 %in% conditions); split(x1, x1$X1)})

最新更新