gpt4 book ai didi

r - 如何在函数内抑制 qplot 的 binwidth 警告?

转载 作者:行者123 更新时间:2023-12-04 03:09:28 27 4
gpt4 key购买 nike

我正在编写一个使用 qplot() 的函数绘制直方图,例如,

> library(ggplot2)
> d=rnorm(100)
> myfun=function(x) qplot(x)

运行它会发出警告:
> myfun(d)
stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.

为了抑制警告,我尝试自己计算 binwidth,但这给出了一个错误并且没有绘制:
> myfun=function(x) print(qplot(x, binwidth=diff(range(x))/30))
> myfun(d)
Error in diff(range(x)) : object 'x' not found

我有两个相关的问题:
  • 这是怎么回事?为什么找不到对象“x”?
  • 如何编写函数以便不生成警告?

  • 谢谢!

    最佳答案

    我无法解释为什么会这样(Hadley 可能会通过并这样做)但使用 ggplot而不是 qplot解决问题:

    d <- data.frame(v1 = rnorm(100))
    myfun <- function(x){
    p <- ggplot(data = x, aes(x = v1)) +
    geom_histogram(binwidth = diff(range(x$v1))/30)
    print(p)
    }

    这样做我没有收到警告消息。另外,使用 ggplot并删除 binwidth = ... geom_histogram 中的部分使警告再次出现,但随后 suppressMessages也按预期工作。

    我怀疑这与命名空间或环境以及何时/何地有关 qplotggplot正在评估参数。但同样,这只是一个猜测......

    关于r - 如何在函数内抑制 qplot 的 binwidth 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7458796/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com