Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于循环,在R中批打印多个文件_R_Loops - Fatal编程技术网

对于循环,在R中批打印多个文件

对于循环,在R中批打印多个文件,r,loops,R,Loops,我有5个选项卡文件,分别称为“1.txt”、“2.txt”、“5.txt”。每个文件包含一个名为“x”的列和另一个名为“y”的列 我想应用一个循环,分别从每个文件生成一个绘图,并将绘图重定向到相应的输出pdf文件中,分别称为“1.pdf”、“2.pdf”。。。“5.pdf” 以下是我尝试过的,但我想PDF部分有一个问题: files<-list.files(pattern=".txt") for (input in files){ output<-basename(file.p

我有5个选项卡文件,分别称为“1.txt”、“2.txt”、“5.txt”。每个文件包含一个名为“x”的列和另一个名为“y”的列

我想应用一个循环,分别从每个文件生成一个绘图,并将绘图重定向到相应的输出pdf文件中,分别称为“1.pdf”、“2.pdf”。。。“5.pdf”

以下是我尝试过的,但我想PDF部分有一个问题:

files<-list.files(pattern=".txt")
for (input in files){
   output<-basename(file.path(input,fsep=".txt"))     # input files are in working directory
   graph<-read.table(input,header=T)
   pdf('output.pdf')
   plot(graph$x,graph$y)
   dev.off()
} 

filesjoran用越来越多的教学术语说的是,您当前的函数将覆盖您的
output.pdf
五次。我希望你能自己钓到鱼。您必须将某些内容传递给
pdf()
,才能生成五个唯一的文件。像这样的事情可能会有帮助

files <- list.files(pattern=".txt")
for (input in files){
   output <- basename(file.path(input,fsep=".txt")) 
   graph  <- read.table(input,header=T)
   pdf(paste0("output for ", input,".pdf"))
   plot(graph$x,graph$y)
   dev.off()
} 

文件我不确定您是否建议粘贴,因为我的文件名为“1”、“2”、“3”、“4”、“5”。我举了这些名字作为例子。我的意思是用与相应输入文件相同的前缀命名输出文件。我的建议与特定文件的特定名称无关。它正好是解决这个问题的工具。让我们考虑一下:
output
包含您希望重用的输入文件名部分。我们必须将字符值传递给
pdf()
以命名文件<代码>粘贴
允许我们将多个字符串组合成一个字符串…几乎就在那里。我尝试了大量的组合。最好的方法是用
pdf(paste0(output,.pdf”)
替换,它生成文件,但“.txt”扩展名仍然存在(“1.txt.pdf”)。我试图修改
file.path
函数,但没有任何更改。它还返回read.table(input,header=T)中的
错误:列数多于列名
。还尝试了使用
paste
而不是
paste0
,但结果相同。但图表是正确的!要删除
.txt
请使用:
output\u notxt=sub(“.txt”,output)
,它基本上用一个空字符串替换
.txt
。@lqdo2000
basename
工作正常。它“删除最后一个路径分隔符(如果有)之前的所有路径”。它的文档中没有任何关于删除文件扩展名的内容。@lqdo2000,我同意joran的观点,您需要阅读文档。