根据R中的值过滤行和列

时间:2016-02-19 08:48:47

标签: r

我有一个距离矩阵,它包含所有可能的节点组合之间的数据。

    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功能?

1 个答案:

答案 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))