我正在尝试使用第一个值固定为0的数据帧中的加速度来计算R中的速度。我想使用 v = u + at 从{ {1}},其中 t 是常数0.002。初始数据帧如下所示:
velocity[2:nrow(trial.data)]
我尝试使用第二行中的滞后,但这给出的值为零,第3行中的值正确,而后面的其他值也不正确。
trial.data <- data.table("acceleration" = sample(-5:5,5), "velocity" = c(0))
acceleration velocity
1 0 0
2 5 0
3 -1 0
4 3 0
5 4 0
答案 0 :(得分:0)
速度是累积加速度,因此请使用cumsum
:
trial.data <- data.table("acceleration" = c(0,5,-1,3,4))
u <- 0 #starting velocity
velocity <- c(u,u+cumsum(trial.data$acceleration)*0.002)
trial.data$velocity <- velocity[-length(velocity)]
输出:
> trial.data
acceleration velocity
1: 0 0.000
2: 5 0.000
3: -1 0.010
4: 3 0.008
5: 4 0.014
请注意,速度矢量具有最后一个元素(恰好是0.022),在将其读入数据表时会被忽略,因为否则列的长度将不相等。上面的代码以u = 0
开头,但是u
可以更改为任何其他起始速度,并且该代码可以按预期工作。