我想计算R 3.1.1中从一个点到一堆点的距离:
p=c(1,2)
points=rbind(c(2,3),c(5,3),c(2,5))
p-points
根据我的经验,我认为结果应该是:
[,1] [,2]
[1,] -1 -1
[2,] -4 -1
[3,] -1 -3
但我得到了:
[,1] [,2]
[1,] -1 -1
[2,] -3 -2
[3,] -1 -3
我意识到索引是按列而不是按行。这是从一个R版本改为另一个版本还是我对该问题的记忆错了?
答案 0 :(得分:1)
我认为你对这个问题的记忆是错误的: - }
来自?array
数据中的值被视为数组中最左侧下标移动最快的值。
我的记忆并不是特别可靠但我认为自从我十多年前第一次接触S-plus以来就是如此;我似乎记得当我第一次阅读并将其记录在心中时感到惊讶"插槽。
这一选择可以追溯到FORTRAN时代的迹象来自于R简介:
5.1阵列 ...
数据向量中的值以与FORTRAN中出现的顺序相同的顺序给出数组中的值,即“列主要顺序”,第一个下标移动最快,最后一个下标最慢。
更改此选项会破坏如此多的代码,我怀疑它已被更改,或者没有重大讨论和警告。
答案 1 :(得分:0)
垂直存储在R中的向量以解决此问题,您应该使用转置。
请改用:
t(p-t(points))