我有一个距离矩阵,它包含所有可能的节点组合之间的数据。
a b c
a 0.0 0.2 0.5
b 0.2 0.0 0.6
c 0.5 0.6 0.0
在上面的例子中,a,b,c是节点,矩阵中的值表示相应的距离。
鉴于此,我希望输出如下:
给出距离小于给定阈值的所有可能节点。例如,如果阈值是0.4,我想要
output :
{a,c}{c,b}{b,c}{c,a}
我正在探索R中的assignClones函数,但无法获得预期的输出。
您能否建议其他方法,以及何时可以使用assignClones功能?
答案 0 :(得分:0)
根据您的预期输出,您似乎有兴趣选择距离大于大于0.4的点对(这与您的问题描述不对应)。如果是这种情况,您可以尝试以下方法:
dist_pairs <- which(df1!=0 & df1 > 0.4, arr.ind=TRUE)
dist_pairs[] <- sapply(dist_pairs, function(x) x <- letters[x])
> dist_pairs
# row col
#[1,] "c" "a"
#[2,] "c" "b"
#[3,] "a" "c"
#[4,] "b" "c"
否则,如果您希望这些对低于0.4的阈值,请将>
符号更改为<
符号。
数据强>
df1 <- structure(list(a = c(0, 0.2, 0.5), b = c(0.2, 0, 0.6),
c = c(0.5, 0.6, 0)), .Names = c("a", "b", "c"), class = "data.frame",
row.names = c(NA, -3L))