我确信这很简单,但是我在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的文件夹,并且想要一个循环函数,它可以单独读取这些文件并为每个文件创建相应的输出文件。正如我所说的,我确信有一种简单的方法可以将其作为循环函数来实现,但是让我沮丧的部分是修改输出文件名。
答案 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:138
或read.table
或任何您想要的内容时使用这些文件名。