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

R 如何使用宏输出不同的文件?,r,csv,macros,R,Csv,Macros,我有一个大的R文件,我将用它分析十个数据文件,对应于我在研究中运行的十个主题。 假设这十个数据文件被命名为sub1.csv,sub2.csv等 R文件以csv格式输出一些表格,以PDF格式输出一些图形(总共大约有十个或十五个输出) 一旦我有了比较它们所需的所有输出,那么最好以主题命名每个输出文件,例如: graph1_sub1.pdf graph2_sub1.pdf table1_sub1.csv 依此类推每个主题的所有文件 我想知道,获取以每个主题命名的所有输出文件的最佳工作流是什么 我曾想

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

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

一旦我有了比较它们所需的所有输出,那么最好以主题命名每个输出文件,例如:

graph1_sub1.pdf
graph2_sub1.pdf
table1_sub1.csv
依此类推每个主题的所有文件

我想知道,获取以每个主题命名的所有输出文件的最佳工作流是什么


我曾想过创建十个不同的R文件,但后来我不得不重写每个主题的输出文件名(即使使用搜索功能也不会花太长时间)。我想知道是否有更好的方法,可能是使用宏。

根据您的要求,下面是通过循环生成绘图和导出的示例:

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)
}

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

这个问题没有足够的细节来给出一个真正好的答案,但可以在循环中写入文件。我经常做的一件事是以不同的方式转包数据,并创建绘图或导出数据。您可以循环使用i%in%(#个文件),然后将文件名粘贴在一起,如paste0(“graph1#”,i,.pdf”),谢谢,您的意思是我应该执行类似于for循环的操作,在整个R文件上循环?你能写for循环第一行的代码吗,我明白你的意思,但我不是100%确定。这里是一个开始:
for(I in names(x)){write_csv(x[[I]],paste0(I,“file.csv”),col_names=FALSE)}