小编Bar*_*art的帖子

在ggplot找不到的函数内创建的对象

我为我生成ggplots的许多站点提供了一系列时间序列数据,显示了使用changepoint包的方法的变化.我编写了一个函数,它接受csv,执行一些计算以获得方法然后遍历站点,为每个站点生成一个图.我的问题是找不到在for循环中创建的对象.

下面是一个非常简单的示例,但会产生相同的错误:

df1 <- data.frame(date = seq(as.Date("2015-01-01"), as.Date("2015-01-10"),
                         by = "day"),
              site1 = runif(10),
              site2 = runif(10),
              site3 = runif(10))

example <- function(df1){

    sname <- names(df1)[-1]

    for (i in 1:length(sname)){
            df2 <- df1[,c(1, 1+i)]
            df2$label <- factor(rep("ts", by=length(df2[,1])))

            plot <- ggplot()+
                    geom_point(data=df2, aes(x=date, y=df2[,2]))+
                    geom_line(data=df2, aes(x=date, y=df2[,2]))
            sname.i<-sname[i]
            filename<-paste0(sname.i, "-test-plot.pdf")
            ggsave(file=filename, plot)
    }
}

example(df1)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:"eval中的错误(expr,envir,enclos):找不到对象'df2'"

我不太确定问题是什么,因为我创建了类似的循环,这些循环在过去有效.如果我为i分配一个值并循环遍历循环中的代码,它可以正常工作.我在想环境问题?还是ggsave在做什么呢?感激地收到任何帮助/指针.谢谢.

for-loop r function ggplot2

8
推荐指数
1
解决办法
2238
查看次数

标签 统计

for-loop ×1

function ×1

ggplot2 ×1

r ×1