Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:得到等列矩阵的索引_R - Fatal编程技术网

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是在寻找相同的列。使用距离或聚类算法(幕后测量)只能对相似的向量进行分组。@研究距离算法可以找到相同的列(在浮点精度范围内)。我假设他们仍在处理与上一个问题相同的问题,这与相同的列无关。