【问题标题】:How to calculate distance matrix using outer function in R如何使用R中的外部函数计算距离矩阵
【发布时间】:2021-03-07 13:17:01
【问题描述】:

我有一些二进制向量我想计算矩阵和向量之间的tanimoto 距离。使用dist 函数执行此操作的唯一方法是使其成为单个矩阵,这意味着结果是一个 3x3 矩阵。我想计算x 中每个向量与向量y 之间的距离。所以结果应该是一个 2x1 向量。任何人都可以建议这是如何完成的。请在下面查看我的代码。谢谢。


x=matrix(c(1,0,1,1,0,0),3,2)

y = c(0,1,1)

dist(cbind(x,y),method = "binary", upper = T, diag = T)

【问题讨论】:

    标签: r matrix distance


    【解决方案1】:

    首先,函数 dist 的对象x 每行有一个向量,而不是每列。所以,你应该这样写代码:

    dist(rbind(t(x),y),method = "binary", upper = T, diag = T)
    

    为了回答你的问题,试试这个:

    dist_y <- function(x) dist(rbind(x,y = c(0,1,1)),method = "binary", upper = T, diag = T)
    apply(x,2,dist_y)
    

    【讨论】:

    • 这行得通。谢谢你。我没有补充说我希望这样做是因为 y 也是一个矩阵。有没有办法可以扩展到这种情况?
    • 当然,只需使用相同的函数 dist_y(当然是替换 y),然后将其与 lapplysplit 一起使用,如下所示: lapply(split(t (x),ncol(x)),dist_y)
    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多