在R中循环以读取顺序编号的文件名并输出相应的编号文件

时间:2016-02-03 20:19:24

标签: r loops

我确信这很简单,但是我在R中编写自己的编程并不熟悉,并且很难掌握循环语法。

我有这样的代码:

mydata1 <- read.table("ph001.txt", header=TRUE)
# ... series of formatting and merging steps
write.table(mydata4, "ph001_anno.txt", row.names=FALSE, quote=FALSE, sep="\t")

png("manhattan_ph001.png"); manhattan(mydata4); dev.off()
png("qq_ph001.png"); qq(mydata4$P); dev.off()

输入文件 ph001.txt 是从线性回归算法输出的,我需要输出 ph001_anno.txt manhattan_ph001.png qq_ph001.png 。后两者使用qqman包。

我有一个包含ph001到ph138的文件夹,并且想要一个循环函数,它可以单独读取这些文件并为每个文件创建相应的输出文件。正如我所说的,我确信有一种简单的方法可以将其作为循环函数来实现,但是让我沮丧的部分是修改输出文件名。

1 个答案:

答案 0 :(得分:0)

您可以使用column1 column2 1 1a 2 2b 3 3c 包来执行许多字符串操作,以便生成文件名,如下所示:

stringr

在上面的代码块中,对于f <- function(i) { num <- str_pad(i, 3, pad = "0") a <- str_c("ph", num, "_anno.txt") m <- str_c("manhattan_ph", num, ".png") q <- str_c("qq_ph", num, ".png") # Put code to do stuff with these file names here } sapply(1:138, f) 中的每个数字,您可以创建三个文件的名称。然后,您可以在调用1:138read.table或任何您想要的内容时使用这些文件名。