如何遍历日期列表并按每个日期筛选R语言数据框?
解决R语言遍历日期列表筛选数据框的问题
方法一的错误修正
你写的lapply代码存在两个问题:一是匿名函数里误用了整个it.date向量,应该用迭代时传入的单个日期参数x;二是代码末尾缺少闭合括号。修正后代码如下:
v.list <- lapply(it.date, function(x) subset(df, df$date <= x))
方法二的错误修正
for循环的问题有两处:
- 循环变量
i本身就是it.date中的单个日期值,不需要用it.date[i]来取值,直接用i即可 return(v.list)放在循环内部会导致循环仅执行一次就终止,直接移除该语句即可(循环结束后v.list自然就是目标列表)
修正后代码:
v.list <- list() for(i in it.date){ new.df <- subset(df, df$date <= i) v.list <- c(v.list, list(new.df)) }
额外推荐:tidyverse风格写法
既然你加载了tidyverse,也可以用purrr包的map函数实现,代码更简洁:
library(purrr) v.list <- map(it.date, ~ subset(df, date <= .x))
内容的提问来源于stack exchange,提问作者a nony mouse
相关产品推荐
相关产品推荐

