删除矩阵中的重复列

时间:2013-04-09 14:27:30

标签: r

我有一个维度为401 * 5677的数据集。在该矩阵的列中,存在相同但在不同列名下的列。 现在,我想只保留重复多次的列中的一列,并且还要删除列的索引j。

让我们使用以下作为示例矩阵:

B=matrix(c(1,4,0,2,56,7,1,4,0,33,2,5), nrow=3)
colnames(B)<-c("a","b","c","d")

到目前为止我所做的(在我的真实矩阵G上)是:

corrG<-cor(G) 
Gtest=G
for (i in 1:nrow(corrG)){
  for (j in 1:ncol(corrG)){
    if (i<j && corrG[i,j]==1){ 
      Gtest[,j]=NA
    }
  }
}
Gfinal<-Gtest[,complete.cases(t(Gtest))] 

我的代码返回一个矩阵,该矩阵仍然包含(!)一些重复的列。 有什么帮助吗?

2 个答案:

答案 0 :(得分:9)

尝试duplicated函数转置矩阵。

duplicated.columns <- duplicated(t(your.matrix))

new.matrix <- your.matrix[, !duplicated.columns]

答案 1 :(得分:3)

一行回答

B = matrix(c(1, 4, 0, 2, 56, 7, 1, 4, 0, 33, 2, 5), nrow = 3)
colnames(B) <- c("a", "b", "c", "d")

B
##      a  b c  d
## [1,] 1  2 1 33
## [2,] 4 56 4  2
## [3,] 0  7 0  5

B[, !duplicated(t(B))]
##      a  b  d
## [1,] 1  2 33
## [2,] 4 56  2
## [3,] 0  7  5