R中函数的新特性

R中函数的新特性,r,function,R,Function,我在R中运行这个函数,它应该在直方图上绘制密度曲线我这里有原始的单一代码: ggplot(golf, aes(`Driving Accuracy`)) + geom_histogram(aes(y = ..density..), colour = "black", fill = "white") + stat_function(fun = dnorm, args = list(mean = mean(golf$`Drivi

我在R中运行这个函数,它应该在直方图上绘制密度曲线我这里有原始的单一代码:


ggplot(golf, aes(`Driving Accuracy`)) +
        geom_histogram(aes(y = ..density..), colour = "black", fill = "white") +
        stat_function(fun = dnorm, args = list(mean = mean(golf$`Driving Accuracy`, na.rm = T), 
                                               sd = sd(golf$`Driving Accuracy`, na.rm = T))) +
        xlab("Driving Accuracy (%)")
现在我正试图修改这段代码,并使用Lappy和我的数字数据进行类似的绘图

绘图仪
aes()
无法接受字符串输入。请尝试以下操作:

plotter <- function(s) ggplot(Prediction.df, aes_string(s)) +
        geom_histogram(aes(y = ..density..), colour = "black", fill = "white") +
        stat_function(fun = dnorm, args = list(mean = mean(Prediction.df[,s], na.rm = T), 
                                               sd = sd(Prediction.df[,s], na.rm = T))) +
        xlab("Frequency")
lapply(X=names(Prediction.df),FUN=plotter)
绘图仪
aes()
无法接受字符串输入。请尝试以下操作:

plotter <- function(s) ggplot(Prediction.df, aes_string(s)) +
        geom_histogram(aes(y = ..density..), colour = "black", fill = "white") +
        stat_function(fun = dnorm, args = list(mean = mean(Prediction.df[,s], na.rm = T), 
                                               sd = sd(Prediction.df[,s], na.rm = T))) +
        xlab("Frequency")
lapply(X=names(Prediction.df),FUN=plotter)

plotter在较新版本的
dplyr
中,在
aes
中传递字符串可以转换为
sym
bol并进行评估(
!!
),因为
aes\u string
将来可能会被弃用。请注意,
ensym
可以同时接受带引号或不带引号的参数

plotter <- function(s) {
           ggplot(Prediction.df, aes(!! rlang::ensym(s))) +
    geom_histogram(aes(y = ..density..),
        colour = "black", fill = "white") +
    stat_function(fun = dnorm, args = 
      list(mean = mean(Prediction.df[,s], na.rm = TRUE), 
             sd = sd(Prediction.df[,s], na.rm = TRUE))) +
    xlab("Frequency")
 }

plotter在较新版本的
dplyr
中,在
aes
中传递字符串可以转换为
sym
bol并进行评估(
!!
),因为
aes\u string
将来可能会被弃用。请注意,
ensym
可以同时接受带引号或不带引号的参数

plotter <- function(s) {
           ggplot(Prediction.df, aes(!! rlang::ensym(s))) +
    geom_histogram(aes(y = ..density..),
        colour = "black", fill = "white") +
    stat_function(fun = dnorm, args = 
      list(mean = mean(Prediction.df[,s], na.rm = TRUE), 
             sd = sd(Prediction.df[,s], na.rm = TRUE))) +
    xlab("Frequency")
 }
绘图仪