我有一个数据集,表示相对于时间在2d环境中的移动:
time(s) start_pos fwd_dist rev_dist end_pos
1 0.0 4.0 -3.0 2.0
2 2.0 5.1 0.5 3.0
3 3.0 4.7 -0.5 3.5
4 3.5 3.6 -1.8 2.1
5 2.1 2.6 -2.1 1.0
6 1.0 1.5 -1.5 -0.2
我想创建另一个列,这是检查的结果,看看“end_pos”和“start_pos”之间哪个更大,并从“fwd_dist”中减去更大的数字。我正试图遍历数据集,但似乎正在努力解决R
中的语法问题 i<-0
while (i < length(data[,1]){if (data[i,4] > data[i,1]){print (data[i,2]-data[i,4])} else {print (data[i,2]-data[i,1])}; i<-i+1}
我一直收到错误:
Error in if (data[i, 4] > data[i, 1]) { :
argument is of length zero
答案 0 :(得分:2)
pmax(start_pos,end_pos)
将为您提供两个向量的并行最大值(即,分量)。所以你可能正在寻找
fwd_dist-pmax(start_pos,end_pos)
答案 1 :(得分:1)
基于数据框架的方法:
data$difference <- data$fwd_dist - pmax(data$start_pos, data$end_pos)