如何在R中不使用循环计算两列数据之间的间隔gap
R无循环计算行间隔gap的解决方案
方法1:使用dplyr包(代码更直观易读)
首先加载dplyr包(未安装可先执行install.packages("dplyr")):
library(dplyr) df <- df %>% mutate(gap = start - lag(end, default = 1))
lag(end, default = 1)会将end列整体向下偏移1行,第一行的偏移值用默认值1填充,直接相减即可符合你的计算规则。
方法2:Base R实现(无需额外安装包)
利用向量拼接实现偏移计算:
df$gap <- df$start - c(1, df$end[-nrow(df)])
这里df$end[-nrow(df)]会去掉end列的最后一个值,前面拼接1,刚好得到长度和start列一致的偏移向量,直接相减即可得到结果。
输出验证
两种方法运行后得到的df结果如下,和你给出的预期输出完全一致:
start end gap 1 172 635 171 2 766 1699 131 3 1817 1891 118 4 2015 2320 124
内容的提问来源于stack exchange,提问作者user3354212
相关产品推荐
相关产品推荐

