我有一个列表,列表中的每个元素都是一个数据框.
> df.list[[1]] Change Diff VarName 1 10.433354 5.311973e-02 a 2 4.587958 1.517604e-02 b 3 4.566829 1.082679e-02 c 4 4.464458 1.345807e-02 d 5 4.146909 7.758011e-03 e 6 4.141556 1.416043e-02 f > df.list[[2]] Change Diff VarName 1 12.443354 5.311973e-02 j 2 3.587958 1.517604e-02 k 3 4.566829 1.082679e-02 a 4 4.464458 1.345807e-02 b 5 3.146909 7.758011e-03 d 6 2.141556 1.416043e-02 e
我的列表长度是10,其中有10个数据帧.每个数据框有30个项目.我希望intersect
每个数据框的前25个与另一个数据框最终得到所有数据框中最常见的项目.
这是我到目前为止所做的:
df1 <- df.list[[1]]$VarName df2 <- df.list[[2]]$VarName df3 <- df.list[[3]]$VarName df4 <- df.list[[4]]$VarName intersect(intersect(intersect(df1,df2), df3), df4)
有没有使用dplyr
或任何其他工具做到这一点.
试试Reduce
基地R:
ls <- vector("list", 10) for (i in 1:10) ls[[i]] <- head(df.list[[i]]$VarName, 25) Reduce(intersect, ls)
或者单线代码:
Reduce(intersect, lapply(df.list, function(x) head(x$VarName, 25)))