R-如何根据条件向量对列表中存储的所有数据帧进行子集

R-如何根据条件向量对列表中存储的所有数据帧进行子集,r,dataframe,lapply,R,Dataframe,Lapply,这是我第一次在这里提问,所以如果我需要改变我的方式,请告诉我。我已经找了一段时间了,但还没有找到我需要的东西 我有一个3个数据帧的列表。它们具有相同的结构(变量),但观察次数不同。我想根据向量中存储的几个条件,为列表中的每个数据帧获取几个子集 如果我有5个条件,我需要得到,对于我列表中3个数据帧中的每一个,这些数据帧的5个子集,总共15个 例如: df1 <-data.frame(replicate(3,sample(0:10,10,rep=TRUE))) df2 <-data.fr

这是我第一次在这里提问,所以如果我需要改变我的方式,请告诉我。我已经找了一段时间了,但还没有找到我需要的东西

我有一个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)

df1再次重叠,这一次在以下条件下:

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), ])
})

df1一个选项是使用%
中的
%进行过滤,然后根据“X1”列对
进行拆分

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

lappy(我的列表,函数(x){x1谢谢你的提示!
lapply(my_list, function(x) {x1 <- subset(x, X1 %in% conditions); split(x1, x1$X1)})