子集列表中的所有dataframes基于动态条件

问题描述:

我称之为一个数据帧“maxDF”子集列表中的所有dataframes基于动态条件

factor max_condition 
A  7 
B  4 
C  6 

我有一个名为“我的名单”包含几个dataframes共享相同的变量(列名)列表:数据帧结构的

mylist <- c('A', 'B', 'C', etc) 

mylist$A 
factor condition 
A   0 
A   3 
A   6 
A   7 
A   8 
A   9 

mylist$B 
factor condition 
B   0 
B   1 
B   2 
B   3 
B   4 
B   5 

欲子集这些dataframes根据从maxDF

采取的条件动态条件

我可以手动使它成为每个数据帧如下

conditionA = maxDF$max_condition[maxDF$factor=='A'] 
filter(mylist$A, condition<=conditionA) 

A 
factor condition 
A   0 
A   3 
A   6 
A   7 

我想问一下,如果有任何的方式来自动子集列表中的所有dataframes 'mylist'而不是一个一个地去做,因为我在真实列表中有99个数据框。

我期待听到您的见解。

随着亲切的问候,

你只需要使用lapply使它工作来修改你的代码一点点:

mylist2 = lapply(mylist, function(x) { 
m = maxDF[maxDF$factor==unique(x$factor),]$max_condition; 
x[x$condition<=m,] }) 

这将返回:

$A 
    factor condition 
1  A   0 
2  A   3 
3  A   6 
4  A   7 

$B 
    factor condition 
1  B   0 
2  B   1 
3  B   2 
4  B   3 
5  B   4 
+0

非常感谢你。它效果很好! – BINewbies

lapply(1:nrow(maxDF), function(i) filter(mylist[[i]], condition < maxDF[i,2])) 

应该做的工作。