有没有办法使用dplyr的filter函数打印出每个筛选操作从数据框中筛选的行数?
考虑一个简单的示例数据框进行筛选:
test.df <- data.frame(col1 = c(1,2,3,4,4,5,5,5))
filtered.df <- test.df %>% filter(col1 != 4, col1 != 5)
我希望这段代码能够输出:
- 使用: col1 != 4 过滤掉了2行
- 使用: col1 != 5 过滤掉了3行
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,但这并没有真正帮助我。