R 删除矩阵中重复的列

R 删除矩阵中重复的列,r,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") B=矩阵(c(1,4,0,2,56,7,1,4,0,33,2,5),nrow=3) colnames(B)tryduplicated函数对矩阵进行转置 dupl

我有一个维度为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")
B=矩阵(c(1,4,0,2,56,7,1,4,0,33,2,5),nrow=3)

colnames(B)try
duplicated
函数对矩阵进行转置

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

new.matrix <- your.matrix[, !duplicated.columns]
duplicated.columns单行答案

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
B=矩阵(c(1,4,0,2,56,7,1,4,0,33,2,5),nrow=3)

colnames(B)是,1行。但OP希望删除列的索引。所以我有一行额外的代码;-)是的,我需要索引,因为我还有一个向量,它的长度等于列数。因此,每当我从矩阵中删除一列时,我还需要从这个向量中删除相应的元素。:)我认为这将是我问题的解决方案(即删除重复的列),但似乎我错过了一些东西。事实上,我需要得到一个满秩(按块)矩阵。矩阵中的块由我之前告诉过你的向量定义。因此,如果向量的前50个元素等于1,这意味着矩阵的前50列属于第1组等。您知道如何获得分块满秩矩阵吗?我建议将其作为单独的问题发布。
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