【发布时间】:2013-04-22 12:58:45
【问题描述】:
我对 R 很陌生,我正在尝试从我的矩阵中的两个变量和净距离(第一个点和最后一个点之间的欧几里得距离)计算总距离(或所有数据点上的欧几里得距离的总和)我的数据。 所以只是我的数据的背景。我的数据通常是一个包含 5 个变量的 csv 文件:单元格轨迹(称为 A)、时间间隔、每个单元格的 X 和 Y 位置、V=速度。每个数据大约有 90 个磁道,每个磁道应相互独立处理。
dput(head(t1))
structure(list(A = c(0L, 0L, 0L, 0L, 0L, 0L), T = 0:5, X = c(668L,
668L, 668L, 668L, 668L, 668L), Y = c(259L, 259L, 259L, 259L,
259L, 259L), V = c(NA, 0, 0, 0, 0, 0)), .Names = c("A", "T",
"X", "Y", "V"), row.names = c(NA, 6L), class = "data.frame")
之前不知道dist()函数,所以自己做了一个函数:
GD.data <- function (trackdata)
{A= trackdata(, 1); V=trackdata(, 5);
for (i in min(A):max(A))
while (A<=i) {GD(i) = (sum (V)*(1/25))
return (GD(i))}
这不起作用。我使用 A 作为轨道的标识符,因为总距离也可以计算为: distance=velocity (t1-t0),我只是将所有速度乘以我的时间间隔的总和(因为它始终是 1/25 秒。
如何使用 dist() 函数和我的 A 作为标识符?我需要这个,因为每个轨道的计算应该是分开的。谢谢!
【问题讨论】:
-
谢谢!但他仅从一名车手(赛道)进行计算。如果在一个矩阵中计算多个轨道(在他的情况下,是多个驱动程序)怎么办?谢谢
-
当您说没有工作时,您收到了哪些错误消息?我假设至少 argument "x" 丢失,没有默认值 ?您有一个数据框 (
trackdata) 并尝试使用例如引用列(,1)。您需要使用[这是子集功能 - 即trackdata[,1]将为您提供第一列。 HTH! -
如果您将
dput(head(trackdata))的输出作为代码块发布到您的问题中,这将很有帮助,然后我们可以在我们的计算机上重新创建您的数据的小样本。 -
@SimonO101 当我在控制台上运行它时,它有点等待另一个命令,因为箭头没有出现。所以我不知道它是否真的不起作用,或者我是否以错误的方式结束它。
标签: r euclidean-distance