R 在函数内调用时使用png函数不起作用

R 在函数内调用时使用png函数不起作用,r,plot,ggplot2,R,Plot,Ggplot2,我有一个函数,它做一些事情,然后根据一个条件进行绘图: f <- function(n) { rand <- rnorm(n) no <- seq_len(n) df <- data.frame(no=no, rand=rand) if (n > 10) { png("plot.png") p <- ggplot(df) p + geom_point(aes(x=no, y=rand)) dev.off(

我有一个函数,它做一些事情,然后根据一个条件进行绘图:

f <- function(n) {
  rand <- rnorm(n)
  no   <- seq_len(n)
  df   <- data.frame(no=no, rand=rand)
  if (n > 10) {
    png("plot.png")
    p <- ggplot(df)
    p + geom_point(aes(x=no, y=rand))
    dev.off()
  }
}

f(11)

f根据回答,这里有两种解决方案:

library(ggplot2)
f <- function(n) {
  rand <- rnorm(n)
  no   <- seq_len(n)
  df   <- data.frame(no=no, rand=rand)
  if (n > 10) {
    png("plot.png")
    print({
      p <- ggplot(df)
      p + geom_point(aes(x=no, y=rand))
    })
    dev.off()    
  }
}

f(11)

谢谢大家。

我刚从其他网站(下面提供的链接)了解到。在循环中,必须显式使用print函数才能使jpeg()、png()函数正常工作。 在原始帖子中,您只需添加一行打印(p)

if(n>10){
png(“plot.png”)

p这是一个,你无论如何都应该使用
ggsave
。可能重复的可能重复我们需要一个
faq
软件包,该软件包具有一个功能,可以在Web上爬行并根据引用对条目进行排序。默认的R启动消息将显示一个随机的faq,我们中的一些人可能会使用
fortune()
@baptise你写脚本就是为了这么做吗?我真的认为这是一个很棒的主意:)+1你可以接受自己的答案。告诉大家你的问题已经解决了。仅供参考,你可以使用png()设置所需的分辨率。例如,如果你想要一幅300 dpi、6英寸见方的图像,你可以调用png('plot.png',高度=6,宽度=6,分辨率=300,单位='in')
library(ggplot2)
f <- function(n) {
  rand <- rnorm(n)
  no   <- seq_len(n)
  df   <- data.frame(no=no, rand=rand)
  if (n > 10) {
    p <- ggplot(df)
    p + geom_point(aes(x=no, y=rand))
    ggsave(file="plot.png")
  }
}

f(11)
  if (n > 10) {
        png("plot.png")
        p <- ggplot(df)
        p + geom_point(aes(x=no, y=rand))
        print(p)
        dev.off()
    }