我有两个 vector

x <- rnorm(100)
y <- rnorm(100)

我需要计算所有点之间的斜率(公式:y2-y1 / x2-x1)。所以我需要点(x1, y1)(x1, y2)(x1, y1)(x1, y3) ...,(x2,y2)和(y2,y3)等之间的斜率。总的来说,这将是choose(n, 2)斜率。

如何在R 中有效地做到这一点(我需要运行多次,所以效率在这里真的很重要)

最佳答案

如果需要choose(n, 2)点数与n点数之间的(x, y)斜率,请使用

xy <- cbind(x, y)
library(RcppAlgos)
ind <- comboGeneral(nrow(xy), 2)
d <- xy[ind[, 2], ] - xy[ind[, 1], ]
slope <- d[, 2] / d[, 1]

我没有使用R core的combn函数。有关案例研究,请参见Product between all combinations of a vector's elements

关于r - 计算两点之间的所有可能斜率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52152542/

10-11 04:19