【发布时间】:2015-05-13 04:04:11
【问题描述】:
假设我有一个矩阵:
A <- matrix(c(2,4,3,1,5,7), nrow=3, ncol=2)
colnames(A) <- c ("x", "y")
A
x y
[1,] 2 1
[2,] 4 5
[3,] 3 7
有没有办法使用 for 循环访问矩阵的每一行?
我要做的是计算每个连续点 (x,y) 之间的欧几里得距离。所以在这个例子中,我会找到以下之间的总距离:
(2,1) 和 (4,5)
(4,5) 和 (3,7)
所以首先我会找到两点之间的距离,即:
(2,1) and (4,5) => (|4-2|,|5-1|) => (2,4)
(4,5) and (3,7) => (|3-4|,|7-5|) => (1,2)
那我就把它变成欧式距离:
(2,4) => sqrt(2^2 + 4^2) => 4.47
(1,2) => sqrt(1^2 + 2^2) => 2.24
总距离
4.47 + 2.24 = 6.71
我非常有信心,如果我可以将矩阵的每一行作为向量访问,我就可以轻松编写代码。但是,我很想听听任何更好的方法。
我也在考虑将矩阵转换为列表列表(即 (x,y) 点列表,其中每个点是 x 和 y 值的列表),或点列表 (x, y)。
我在编程方面不是很有经验,而且我刚刚开始使用 R,如果我说的不明白,请见谅。
【问题讨论】:
-
很好地制作了一个可重复的示例,清楚地列出了问题、您需要的结果以及您已经考虑过的内容。不过,作为未来的策略,您通常可以通过 google
R term获得有关 R 函数的一些线索以执行特定任务。例如。R distance会直接引导你到dist函数。