如何使用宏输出不同的文件?

时间:2017-06-14 14:24:51

标签: r csv macros

我有一个大R文件,我将用它来分析十个数据文件,对应于我在研究中运行的十个主题。 我们假设十个数据文件名为sub1.csvsub2.csv等。

R文件以csv格式输出一些表格,以PDF格式输出一些图表(总共约十或十五个输出)。

一旦我将所有输出都需要比较它们,所以将每个输出文件命名为主题后会很好,例如:

graph1_sub1.pdf
graph2_sub1.pdf
table1_sub1.csv

以及每个主题的所有文件。

我想知道,获取每个科目后命名的所有输出文件的最佳工作流程是什么?

我考虑过创建十个不同的R文件,但是我必须为每个主题重写输出文件名称(即使使用搜索功能也不需要花费很长时间)。我想知道是否有更好的方法,也许使用宏。

1 个答案:

答案 0 :(得分:1)

根据您的要求,这是一个生成绘图并通过循环导出的示例:

for(s in unique(iris$Species)){

  temp = iris[iris$Species == s,]

  pdf(file = paste0(s,"_width_hist.pdf"))
  hist(temp$Sepal.Width)
  dev.off()

  pdf(file = paste0(s,"_length_hist.pdf"))
  hist(temp$Sepal.Length)
  dev.off()

  write.csv(x = temp, file = paste0(s,".csv"), row.names = FALSE)
}

这肯定比你正在做的更简单,但你可以使用这样的循环来生成文件。另一种选择是编写一个函数,从一个数据集生成所有所需的输出,并使用lapply在所有数据集上运行它。