我正在尝试找出执行以下操作的最简单方法。我有一个数据框df
和colnames(df) <- c("A", "B", "C", "D", "E")
,其中所有变量都编码为因子。给定变量的任意子集,我想生成df
行的所有可能子集,这些子集可以基于这些变量的因子水平的所有可能组合来生成。
因此,基本上,我正在寻找一个以列名向量作为参数的函数allSubsets
(假设c("A", "E")
并返回数据帧列表。假设levels(df$A)
是a1, a2
和levels(df$E)
是e1, e2, e3
,那么我想让函数生成一个数据帧列表(元素对应于的长度:
df[df$A == 'a1' & df$E == 'e1',]
df[df$A == 'a2' & df$E == 'e1',]
df[df$A == 'a1' & df$E == 'e2',]
df[df$A == 'a2' & df$E == 'e2',]
df[df$A == 'a1' & df$E == 'e3',]
df[df$A == 'a2' & df$E == 'e3',]
我知道expand.grid
,但是我不确定这是否是最好的方法。
答案 0 :(得分:0)
我们可以使用split
获得list
的{{1}}
data.frame