R:索引矩阵是否有可能从“by row”变为“by col”?

时间:2014-10-20 09:05:53

标签: r matrix indexing

我想计算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版本改为另一个版本还是我对该问题的记忆错了?

2 个答案:

答案 0 :(得分:1)

我认为你对这个问题的记忆是错误的: - } 来自?array

  

数据中的值被视为数组中最左侧下标移动最快的值。

我的记忆并不是特别可靠但我认为自从我十多年前第一次接触S-plus以来就是如此;我似乎记得当我第一次阅读并将其记录在心中时感到惊讶"插槽。

这一选择可以追溯到FORTRAN时代的迹象来自于R简介:

  

5.1阵列   ...

     

数据向量中的值以与FORTRAN中出现的顺序相同的顺序给出数组中的值,即“列主要顺序”,第一个下标移动最快,最后一个下标最慢。

更改此选项会破坏如此多的代码,我怀疑它已被更改,或者没有重大讨论和警告。

答案 1 :(得分:0)

垂直存储在R中的向量以解决此问题,您应该使用转置。

请改用:

t(p-t(points))