r语言 - 创建循环或函数,用于计算每个观测值,并根据第一个计算的结果执行另一个计算



我有一个名为time的向量:Time <- c(2.444582, 2.445613, 2.446644, 2.447675, 2.448706, 2.449737, 2.769358, 2.770389, 2.771420, 2.772451, 2.773482, 2.774513, 2.775544, 2.776575, 2.777606, 3.087606, 3.093759, 3.099134, 3.100493, 3.478295, 3.484896, 3.482309)

我想创建一个循环或函数,从前一个观察中减去每个观察,例如:2.445613-2.444582、2.446644-2.445613、2.447675-2.446644 等。然后,如果每个观测值之间的差值大于 0.2(即 2.769358-2.448706 = 0.320(,我想得到较小数字与该序列中第一个数字之间的差值(即 2.449737-2.444582、2.777606-2.769358、3.100493-3.087606(以及与向量中最后一个数字和特定序列中第一个数字的差值(即 3.482309-3.478295(

我从这个时间向量获得的所需输出是:0.005155、0.008248、0.012887、0.004014

这是没有循环的一种方式:

我们首先得到当前观测值与前一个观测值之差大于 0.2 的位置。然后,我们使用此位置创建索引以从向量Time子集值。

inds <- which(diff(Time) > 0.2)
Time[c(inds, length(Time))] - Time[c(1, inds + 1)]
#[1] 0.005155 0.008248 0.012887 0.004014

最新更新