【问题标题】:Using mapply to plot multiple histograms with ggplot separately使用 mapply 分别用 ggplot 绘制多个直方图
【发布时间】:2016-12-20 16:37:49
【问题描述】:

我想为来自不同数据集的多个连续变量绘制直方图。我为 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

【问题讨论】:

  • 看起来您正在循环单个变量 (vars),这似乎是 lapply/sapply 而不是 mapply 的情况。

标签: r ggplot2 histogram apply mapply


【解决方案1】:

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

因此,mapply 会将菱形的第一个元素作为输入。

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

所以当前代码将函数应用于列表中每个元素的每个菱形变量c("x", "y")

要正确执行此操作,我担心在这种情况下使用 for 循环是相关的,至少对于数据集而言。

【讨论】:

    猜你喜欢
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    相关资源
    最近更新 更多