我是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”,......)。
然而,所有情节看起来都一样。我仔细检查了一下,并发现这个数据实际上代表了列表的最后一个元素,假设列表中的其他元素没有被绘制并正确保存到变量中(尽管迭代主题标题显然有用......) 。当我手动绘制列表的给定元素时,它可以很好地工作,但在循环内会出现上述问题。
可能这是非常明显的事情,但我无法弄清楚。 谢谢你的帮助!