6

我有一个维度为 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))] 

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

4

2 回答 2

11

duplicated在矩阵的转置上尝试函数。

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

new.matrix <- your.matrix[, !duplicated.columns]
于 2013-04-09T14:33:26.767 回答
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
于 2013-04-09T14:45:36.310 回答