我有两个 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/