【发布时间】:2017-04-22 15:54:45
【问题描述】:
有没有办法使用 dplyr 的过滤器功能打印每个过滤器操作过滤器从数据帧中过滤的行数?
考虑一个经过过滤的简单示例数据框:
test.df <- data.frame(col1 = c(1,2,3,4,4,5,5,5))
filtered.df <- test.df %>% filter(col1 != 4, col1 != 5)
我想输出这段代码:
- '过滤掉 2 行使用:col1 != 4'
- '过滤掉 3 行使用:col1 != 5'
到目前为止,我在创建自己的函数方面所做的尝试
print_filtered_rows <- function(dataframe, ...) {
dataframe_new <- dataframe
for(arg in list(...)) {
print(arg)
dataframe <- dataframe_new
dataframe_new <- dataframe %>% filter(arg)
rows_filtered <- nrow(dataframe) - nrow(data_fram_new)
print(sprintf('Filtered out %s rows using: %s', rows_filtered, arg)
}
return(dataframe_new)
}
但我无法真正掌握......实际上是什么以及如何使用它。我读过:
http://adv-r.had.co.nz/Functions.html#function-arguments
但这并没有真正帮助我。
【问题讨论】:
-
另外,看看 purrr::walk() ,它将打印函数的副作用并沿管道传输数据。