比较列并使用R查找列的唯一值

比较列并使用R查找列的唯一值,r,R,我有一个20*10的矩阵。我想找出这些列所特有的值。一个简单的例子是如下矩阵: matrix(c("a","b","c","d","s","a","d","l","s","a","m","n"),ncol=3,dimnames=list(NULL,c("a","b","c"))) 看起来像: a b c [1,] "a" "s" "s" [2,] "b" "a" "a" [3,] "c" "d" "m" [4,] "d" "l" "n" 使用unique无法满足我的需求

我有一个20*10的矩阵。我想找出这些列所特有的值。一个简单的例子是如下矩阵:

matrix(c("a","b","c","d","s","a","d","l","s","a","m","n"),ncol=3,dimnames=list(NULL,c("a","b","c")))
看起来像:

     a   b   c  
[1,] "a" "s" "s"
[2,] "b" "a" "a"
[3,] "c" "d" "m"
[4,] "d" "l" "n"
使用
unique
无法满足我的需求:

unique(c(mat)):
#[1] "a" "b" "c" "d" "s" "l" "m" "n"
预期结果:

        a    b    c 
[1,] "NA" "NA" "NA" 
[2,] "b"  "NA" "NA" 
[3,] "c"  "NA"  "m" 
[4,] "NA"  "l"  "n"

新答案-我希望你现在得到了答案。。。实际上,您想找出不重复的项…:)

现在有两种方法。第一个包括只找出唯一的值

notDuplicated = setdiff(c(mat),c(mat[duplicated(c(mat))]))
mat[!mat %in% notDuplicated] = NA 
mat
     a   b   c  
[1,] NA  NA  NA 
[2,] "b" NA  NA 
[3,] "c" NA  "m"
[4,] NA  "l" "n"
第二,你可以找到重复的,并直接消除它们

Duplicated = c(mat[duplicated(c(mat))])
mat[mat %in% Duplicated] = NA
     a   b   c  
[1,] NA  NA  NA 
[2,] "b" NA  NA 
[3,] "c" NA  "m"
[4,] NA  "l" "n"

你想要联合还是唯一?那是唯一的。我想要的是一个伟大的专栏作家所独有的价值观!现在我们有进展了!这类信息非常有用。
Duplicated = c(mat[duplicated(c(mat))])
mat[mat %in% Duplicated] = NA
     a   b   c  
[1,] NA  NA  NA 
[2,] "b" NA  NA 
[3,] "c" NA  "m"
[4,] NA  "l" "n"