R:得到等列矩阵的索引
我有一个矩阵,它的一些列相等。 我想得到该列的索引。 例如,如果矩阵是R:得到等列矩阵的索引,r,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) 我有一个聪明的方法来实现这一点吗?这里有一个解决方案: identical_idx <- function(i) which(colSums(mm[,i]==mm) ==nrow(mm)) unique(lapply(seq_len(n
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)
我有一个聪明的方法来实现这一点吗?这里有一个解决方案:
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
相同\u idx使用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
mat也许你必须提供进一步的细节,因为我觉得这个问题与你一小时前发布的问题完全一样。是的,事实上是类似的,我仍在试图回避这个问题unsolved@Ruggero根据我提供的解决方案,我得到了一个索引为c(1,4)
,c(2,5)的列表
和3
作为列表元素。我不知道现在还有什么问题没有解决。@Ruggero在你之前的问题中,你的列具有相同的值,但顺序不同,我猜你希望在排序后得到类似的列。所以,我的解决方案就是基于这个问题。我只能重申:你有一种聚类问题,应该使用为此设计的算法,而不是重新发明轮子。不,这里OP是在寻找相同的列。使用距离或聚类算法(幕后测量)只能对相似的向量进行分组。@研究距离算法可以找到相同的列(在浮点精度范围内)。我假设他们仍在处理与上一个问题相同的问题,这与相同的列无关。