这是我第一次在这里问问题,所以请告诉我是否需要更改我的操作方式。我已经寻找了一段时间,但找不到所需的东西。
我有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]), ])
但是我想对向量条件中的所有值执行此操作。 我希望这是有道理的。
答案 0 :(得分: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), ])
})
答案 1 :(得分:1)
一种选择是先根据{X1'列先过滤<script type="text/javascript">
$(document).ready(function() {
$('#expend').prop('checked', false);
});
</script>
,然后过滤%in%
split