如何简化R语言中处理时间间隔并生成累积和时间点的冗长代码?
R代码简化方案
tidyverse 简化写法(适配你原有的dplyr使用习惯)
你原代码中生成了大量冗余中间变量,直接用管道串联逻辑即可一步得到结果:
library(dplyr) dat7 <- readLines(x) %>% tail(-8) %>% # 等价于删除前8行数据 as.data.frame(col.names = "Time", stringsAsFactors = FALSE) %>% mutate(Time = as.numeric(Time), Time3 = cumsum(Time/1000)) %>% select(Time3)
Base R 极简写法
不需要加载任何第三方包,一行即可实现相同逻辑:
dat7 <- data.frame(Time3 = cumsum(as.numeric(tail(readLines(x), -8))/1000))
简化依据说明
- 你原代码中
dat3 <- list(dat2)再转数据框的步骤完全冗余,字符向量可直接转为数据框,不需要先嵌套为列表 - 中间过渡列
Time2无需单独生成,可以在计算累积和的同时完成毫秒转秒的计算 - 所有中间过渡对象dat2到dat6都可以省略,无需单独赋值占用内存
内容的提问来源于stack exchange,提问作者Slevin
相关产品推荐
相关产品推荐

