【问题标题】:Compute all pairwise differences of elements in a vector [duplicate]计算向量中元素的所有成对差异
【发布时间】:2018-07-04 19:52:03
【问题描述】:

我的问题与之前的帖子密切相关:compute all pairwise differences within a vector in R

但我感兴趣的是这些元素的差异而不是绝对差异,这使得所有建议的解决方案都不可行。

我知道如何使用此命令获取结果:

n <- 4
x <- c(1:4)
combn(x,2, FUN=diff)

但这对于我的 n=500/1000/... 的应用程序来说太慢了。 在 R 中执行此操作的最有效方法是什么

【问题讨论】:

  • 您在代码中哪里使用了n
  • @MKR OP 可能想写x &lt;- c(1:n)
  • 我认为这项任务将通过 Andrey Shabalin 在相关帖子中提出的outer-方法来解决。
  • 看看dist函数。这是 O^2 计算,因此 n 会随着计算时间的增加而迅速增加。
  • 另外,你的最终目的是什么?如果是字符串,例如,已经说了很多......例如efficent string similarity grouping

标签: r


【解决方案1】:

您可以通过outer 做到这一点

x <- c(1:4)
outer(x,x, `-`)
     [,1] [,2] [,3] [,4]
[1,]    0   -1   -2   -3
[2,]    1    0   -1   -2
[3,]    2    1    0   -1
[4,]    3    2    1    0

【讨论】:

  • 没错,这也比combn()快得多。我在相关帖子中知道 outer() ,但我想我在应用它时忽略了某事。谢谢!
猜你喜欢
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
相关资源
最近更新 更多