数据帧列作为dplyr函数的参数
我想将列名作为参数传递给使用dplyr包创建的函数数据帧列作为dplyr函数的参数,r,function,dplyr,R,Function,Dplyr,我想将列名作为参数传递给使用dplyr包创建的函数 df = data.frame(grade = c(1,1,1,3,3,5,7,8,8,4), score = c(10,20,40,43,56,29,59,37,61,88)) tmp.func = function(df.name, variable.name, year.label){ require("dplyr") df = df.name %>% group_by(grad
df = data.frame(grade = c(1,1,1,3,3,5,7,8,8,4),
score = c(10,20,40,43,56,29,59,37,61,88))
tmp.func = function(df.name, variable.name, year.label){
require("dplyr")
df = df.name %>%
group_by(grade) %>%
summarise(n = n(),
M = mean(variable.name),
SD = sd(variable.name),
P25 = quantile(variable.name, probs = .25),
P50 = quantile(variable.name, probs = .50),
P75 = quantile(variable.name, probs = .75)) %>%
mutate(grade = as.numeric(as.character(variable.name))) %>%
arrange(grade) %>%
dplyr::select(grade,
n,
M,
SD,
P25,
P50,
P75)
colnames(df) = paste(names(df), ".", year.label, sep = "")
df
}
tmp = tmp.func(df.name = df, variable.name = "score", year.label = ".1718")
此代码导致以下错误消息。我必须运行同一个函数几十次,所以我需要创建一个能够处理这个问题的函数。有没有更好的方法来解决这个问题
Error in (1 - h) * qs[i] : non-numeric argument to binary operator
In addition: There were 12 warnings (use warnings() to see them)
您可以使用
enquo
和
再次“取消”表达式。有关更多信息,请参见@svenhalvorson建议的不同输入变量部分
my_summarise2 <- function(df, expr) {
expr <- enquo(expr)
summarise(df,
mean = mean(!! expr),
sum = sum(!! expr),
n = n()
)
}
我认为这里的问题在于tidyverse的非标准求值和向函数传递字符串之间的区别。
my_summarise2(df, score)