【发布时间】:2024-01-05 00:34:01
【问题描述】:
所以我在 R 中有一个相当复杂(至少对我而言)的问题。
我想计算两对分布之间的距离,将近 10k 对。
我有一个来自包philentropy 的distance 函数,它接受两个向量x y 并计算它们之间的距离,例如:
d <- distance(x, y, method="desired_method")
另一种选择是创建一个矩阵,每行代表一个分布,以便该函数将计算矩阵中所有分布之间的所有成对距离:
d <- distance(x, method="desired_method")
我有两个相关矩阵 a 和 b,每个矩阵有近 10k 行,对应于 10k 相关分布。两个矩阵的行数相同,我的目标是将矩阵的第一行a 与矩阵的第一行b 进行对比,将第二行a 与第二行b 进行对比,以此类推。
我可以选择每个所需的行并执行第一个 distance 用法,或者我可以将两个矩阵与 rbind 合并并使用第二个 distance 用法执行所有成对距离。
问题是,用第一种方法,我不知道如何生成一个for循环来迭代地获取每个矩阵的第n行,并执行distance计算,同时将结果存储在一个向量中。
另外,如果我执行第二个选项,我不想得到所有成对的距离,而只是对应于:
d[i,i+nrow(a)]
并以迭代方式生成nrow(a) 值的对应向量。
有什么帮助吗?
【问题讨论】:
-
要获取名为“mat”的矩阵的第 n 行,请使用以下语法:mat[n,]
-
我在
philentropy::distance中没有看到 y 参数。