我正在尝试创建一个嵌套循环,我从一个简单的循环开始,并且希望对不同的数据帧进行相同的操作;
这项工作正常:
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)))
}
}
预先感谢
答案 0 :(得分:0)
我们可以使用lapply
遍历list
(mget
-从字符串标识符返回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()
}
)
})