我有一个维度为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))]
我的代码返回一个矩阵,该矩阵仍然包含(!)一些重复的列。 有什么帮助吗?
答案 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