我有一个非常大的矩阵,我知道它们的一些副本是重复的.所以我只想找到那些重复的colnames并从列中删除重复.我试过duplicate()
,但它删除了重复的条目.有人会帮我在R中暗示这个吗?重点是,重复的colnames,可能没有重复的entires.
Dav*_*urg 39
让我们说temp
是你的矩阵
temp <- matrix(seq_len(15), 5, 3)
colnames(temp) <- c("A", "A", "B")
## A A B
## [1,] 1 6 11
## [2,] 2 7 12
## [3,] 3 8 13
## [4,] 4 9 14
## [5,] 5 10 15
Run Code Online (Sandbox Code Playgroud)
你可以做到
temp <- temp[, !duplicated(colnames(temp))]
## A B
## [1,] 1 11
## [2,] 2 12
## [3,] 3 13
## [4,] 4 14
## [5,] 5 15
Run Code Online (Sandbox Code Playgroud)
或者,如果要保留最后一个重复列,则可以执行此操作
temp <- temp[, !duplicated(colnames(temp), fromLast = TRUE)]
## A B
## [1,] 6 11
## [2,] 7 12
## [3,] 8 13
## [4,] 9 14
## [5,] 10 15
Run Code Online (Sandbox Code Playgroud)
Hol*_*ndl 12
或者假设您可以使用data.frames subset
:
subset(iris, select=which(!duplicated(names(.))))
Run Code Online (Sandbox Code Playgroud)
请注意,dplyr::select
这里不适用,因为它已经在输入数据中需要列唯一性.