我一直在遇到一些问题,我认为这是一个非常简单的问题。我有一个函数,它将数据帧列表和日期范围作为输入,按日期过滤数据帧,然后执行其他一些操作。简单地说,它看起来像这样:
my_function <- function(df_list, date_range = c(min, max)) {
for(i in 1:length(df_list)) {
df_list[[i]] <- df_list[[i]][df_list[[i]]$date >= as.Date(date_range[1])]
df_list[[i]] <- df_list[[i]][df_list[[i]]$date <= as.Date(date_range[2])]
}
etc
}
有了上述内容,我收到错误undefined columns selected
。我也试过过滤器和lapply,如:
lapply(df_list, function(df) {
df <- filter(df, week >= as.Date(date_range[1]))
df <- filter(df, week <= as.Date(date_range[2]))
}
哪个不会出错,但仍无效。
我觉得这并不像我做的那么难。有什么建议吗?
答案 0 :(得分:0)
我会使用lapply
。你可以用你想要的东西来实现:
date_range <- as.Date(date_range) # no need to do this on every iteration of the lapply function
df_list <- lapply(df_list,
function(x) x[x$week >= date_range[1] & x$week <= date_range[2], ])
正如@Frank指出的那样,你的第一段代码的主要问题是你在子集化时缺少一个尾随逗号。对于第二个,它应该工作,但您需要将其分配回df_list
。