【发布时间】:2017-05-09 09:13:54
【问题描述】:
我的问题类似于enter link description here 和enter link description here,但我的问题更复杂,因为它需要多个 dplyr 操作和惰性求值。
这是我的功能:
stats <- function(col_names){
require("dplyr")
data %>%
group_by_(col_names) %>%
summarise(Count = n()) %>%
mutate(Percent = prop.table(Count)) -> temp
write.csv(temp, file=paste(col_names,".csv",sep="_"))}
然后,我想将每个列名作为参数传递给 do.call。
colnames <- names(data)
do.call(stats, as.list(col_names))
但我遇到一个常见错误:
Error in (function (col_names) :
unused arguments ("loans_approved_amount_limit_in_account", "loans_approved_amount_limit_in_ron")
如果我单独输入列名,该功能将起作用。但是我必须超过 1000 列,所以我需要自动化这个过程。
【问题讨论】:
-
恐怕没有链接。
-
你为什么使用
do.call?你的函数只接受一个参数。您在寻找lapply吗?此外,您还缺少}。 -
抱歉,刚刚修复了链接。我使用 do.call 是因为我想传递一个参数列表,这些参数是数据框的 1000 多个列名。不知道为什么要这样做。
-
您知道
summarize_all和mutate_all也可以用于相同的目的,而无需lapply。
标签: r function dplyr lazy-evaluation