嵌套循环或等效

时间:2019-04-23 05:14:53

标签: r loops

我正在尝试创建一个嵌套循环,我从一个简单的循环开始,并且希望对不同的数据帧进行相同的操作;

这项工作正常:

  set.seed(123)
    df1= data.frame(date= 1:10,
                vartre=rnorm(10, 30, 4),
                varpre=rnorm(10, 10, 5))

var=names(df1)

for(x in var ) {

plot(df1$date,df1[,x], type="l", main=x)

}

现在,我想对不同的df进行相同的处理,我尝试使用嵌套循环,但这没有用,例如:

df2= data.frame(date= 1:10,
                varkyt=rnorm(10, 100, 40),
                varkdr=rnorm(10, 50, 5))

df3= data.frame(date= 1:10,
                varwer=rnorm(10, 300, 400),
                varpou=rnorm(10, 1000, 500))

dfs=c("df1", "df2", "df3")
for(i in dfs) {
var=names(i)
    for(x in var ) {
plot(i$date,i[,x], type="l", main=paste(i,x)))
}
}

预先感谢

1 个答案:

答案 0 :(得分:0)

我们可以使用lapply遍历listmget-从字符串标识符返回data.frame的list)并绘制

out <- lapply(mget(dfs), function(dat)  {
        var <- names(dat)[-1]
        lapply(var, function(x) plot(dat$date, dat[,x], type = "l",
           main = x))
     })

如果我们需要将其保存在文件夹中

path <- "path/to/folder/"
lapply(mget(dfs), function(dat)  {
        var <- names(dat)[-1]
        lapply(var, function(x) {

        png(filename=paste(path, "grafico", x,".png"))
          plot(dat$date, dat[,x], type = "l",
           main = x)
           dev.off()
           }
           )
     })
相关问题