R:得到相等列矩阵的索引

时间:2015-06-17 11:31:51

标签: r

我有一个矩阵,其中一些列相等。 我想得到那些列的索引。 例如,如果矩阵是

0   2   1   0   2
0   1   5   0   1
4   9   4   4   9
6   14  -1  6   14

我希望获得c(1, 4)c(2, 5)之类的内容 我有一个聪明的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

这是一个解决方案:

identical_idx <- function(i) which(colSums(mm[,i]==mm) ==nrow(mm))
unique(lapply(seq_len(ncol(mm)-1),identical_idx))

[[1]]
V1 V4 
 1  4 

[[2]]
V2 V5 
 2  5 

[[3]]
V3 
 3 

答案 1 :(得分:1)

使用dist

mat <- read.table(text="0   2   1   0   2
0   1   5   0   1
4   9   4   4   9
6   14  -1  6   14")
mat <- as.matrix(mat)

d <- as.matrix(dist(t(mat)))
d[lower.tri(d, diag = TRUE)] <- NA
which(d < 1e-16,  arr.ind = TRUE)
#   row col
#V1   1   4
#V2   2   5