如何在R矩阵中选择唯一列

时间:2017-01-09 03:22:20

标签: r matrix

我想在模拟中选择矩阵six中的唯一列,如下所示:

> set.seed(3)
> sam = replicate(100, sample(1:3, 4, rep = T))
> (six = sam[,colSums(sam)==6])
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    2    1    1    1    1    1    1    1    2     1
[2,]    2    2    3    1    1    2    2    1    2     2
[3,]    1    1    1    1    2    1    1    3    1     1
[4,]    1    2    1    3    2    2    2    1    1     2

我想最终得到一个矩阵:

     [,1] [,2] [,3] [,4] [,5]  [,6] 
[1,]    2    1    1    1    1    1         
[2,]    2    2    3    1    1    1       
[3,]    1    1    1    1    2    3       
[4,]    1    2    1    3    2    1        

2 个答案:

答案 0 :(得分:10)

unique函数与MARGIN=2一起使用,它将返回删除了重复列的矩阵,默认情况下,unique会删除重复的行:

unique(six, MARGIN = 2)

#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    2    1    1    1    1    1
#[2,]    2    2    3    1    1    1
#[3,]    1    1    1    1    2    3
#[4,]    1    2    1    3    2    1

答案 1 :(得分:1)

我们可以使用duplicated

six[,!duplicated(t(six))]
#    [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    2    1    1    1    1    1
#[2,]    2    2    3    1    1    1
#[3,]    1    1    1    1    2    3
#[4,]    1    2    1    3    2    1