使用mapply分别用ggplot绘制多个直方图

时间:2016-12-20 16:37:49

标签: r ggplot2 histogram apply mapply

我想绘制来自不同数据集的多个连续变量的直方图。我为ggplot直方图创建了一个函数:

library(ggplot2)

# two parameters
FU <- function(dat, var){
  ggplot(data = dat, aes_string(var)) +
    geom_histogram(aes(y=..density..), bins = 20)}

FU(diamonds, "y")

现在我定义了一个包含我的连续变量的列表,并希望将其应用于钻石数据集:

vars <- list("x", "y")
lst <- mapply(FU, diamonds, vars)

但这给了我以下错误:

Error: ggplot2 doesn't know how to deal with data of class numeric

1 个答案:

答案 0 :(得分:0)

mapply将FUN应用于每个...参数的第一个元素。

因此,mapply将把钻石的第一个元素作为输入。

当查看长度(钻石)时,我们可以看到钻石有10个元素(10个变量)。

因此,当前代码将函数应用于列表中每个元素的每个钻石变量c("x", "y")

为了正确地做到这一点,我担心在这种情况下使用for循环是相关的,至少对于数据集而言。