传递三个命令在R中相交

时间:2015-03-24 11:49:02

标签: r

我正在使用交叉函数,并想知道是否有任何方法可以传递三个命令而不仅仅是两个:即

colnames(df[ intersect ( grep("name",colnames(df) ), grep("name",colnames(df) ), grep("name",colnames(df),invert=TRUE)   )])

这给了我一个错误:

Error in base::intersect(x, y, ...) 

2 个答案:

答案 0 :(得分:4)

使用Reduce

x <- letters[1:5]
y <- letters[2:6]
z <- letters[3:7]

Reduce(intersect, list(x, y, z))
#[1] "c" "d" "e"

答案 1 :(得分:0)

已经实现了交叉是关联的,所以你可以把一个放在另一个里面:

colnames(df[ intersect (intersect ( grep("name",colnames(df) ), grep("name",colnames(df))), grep("name",colnames(df),invert=TRUE)   )])