在迭代数据帧列表时将图存储在变量中(在R中)

时间:2017-07-19 16:03:24

标签: r plot ggplot2

我是R的新手,想要自动绘制我的数据。我写了一个小脚本,应该做以下事情:

1)迭代给定路径中的csv文件并将数据存储在数据帧列表中

2)迭代此列表,使用ggplot绘制此列表中的每个数据帧并将结果存储在变量中。

#loading libraries#

library(ggplot2)
library(forcats)
library(magrittr) 


#setting wd#
#creating list#
#listing files in given path#

setwd("/path/to/csvfiles")
mylist <- list()
filenames <- list.files(path=getwd())


#iterating over csv-files#
#storing input in variables (var_1,...var_n) and in "mylist"#
#change decimal comma to dot#


for (i in (1:length(filenames))){

  mylist[[i]] <- assign(paste("var",i, sep="_"), read.csv(filenames[i])[ ,1:2]) %>%
    sapply(gsub, pattern=",", replacement=".") %>%
    as.data.frame()
}


#Iterate over list, plotting single element of list and save in variables (plot_1,...,plot_n) in order to later plot them in a given frame (e.g. by using multiplot)#

for (k in 1:length(mylist)){
    mylist[[k]]$value <- as.numeric(as.character(mylist[[k]]$value))

     assign(paste("plot",k, sep="_"),
           ((ggplot(mylist[[k]], aes(x=mylist[[k]]$column1, y=mylist[[k]]$value))) + 
             aes(x = fct_inorder(column1)) +
             ggtitle(paste("plot",k,sep="")) + 
             geom_boxplot(outlier.shape = NA)))
}

我最终得到了我期望从n个不同文件中得到的实际数量( - &gt; n图)。所有这些都具有相应的标题(例如变量plot_1也具有标题“plot_1”,......)。

然而,所有情节看起来都一样。我仔细检查了一下,并发现这个数据实际上代表了列表的最后一个元素,假设列表中的其他元素没有被绘制并正确保存到变量中(尽管迭代主题标题显然有用......) 。当我手动绘制列表的给定元素时,它可以很好地工作,但在循环内会出现上述问题。

可能这是非常明显的事情,但我无法弄清楚。 谢谢你的帮助!

0 个答案:

没有答案