在多个向量上调用setdiff()

use*_*976 4 r

我如何在R中使用setdiff()来获取一个向量而不是其他向量中的元素我的示例如下:

dat1 <- c("osa", "bli", "usd", "mnl")
dat2 <- c("mnu", "erd", "usd", "mnl")
dat3 <- c("ssu", "erd", "usd", "mnl")
Run Code Online (Sandbox Code Playgroud)

以下代码仅返回dat1与dat2和dat3相比的不同之处:

diffs <- Reduce(setdiff, 
        list(A = dat1,
             B = dat2,
             C = dat3
)
Run Code Online (Sandbox Code Playgroud)

如何修改此代码以便能够获取向量中唯一存在的所有元素与另一个相比?谢谢

SeD*_*Dur 6

另一个解决方案setdiff:

myl <- list(A = dat1,
            B = dat2,
            C = dat3)
lapply(1:length(myl), function(n) setdiff(myl[[n]], unlist(myl[-n])))

[[1]]
[1] "osa" "bli"

[[2]]
[1] "mnu"

[[3]]
[1] "ssu"
Run Code Online (Sandbox Code Playgroud)