子集列表中的所有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
答
lapply(1:nrow(maxDF), function(i) filter(mylist[[i]], condition < maxDF[i,2]))
应该做的工作。
非常感谢你。它效果很好! – BINewbies