在我的目录中,我有名为:
的文件file1.a file2.a file3.a
file1.b file2.b file3.b
我想根据文件的名称绘制文件图形(例如:file1.a和file1.b; file2.a和file2.b ...等)。我在R中使用for循环如下:
for (input1 in a_files){
for (input2 in b_files){
graph1<-read.table(input1, header=T, sep="\t")
graph2<-read.table(input2, header=T, sep="\t")
png(paste("header", input1, input2, ".png"))
plot(graph1,graph2, type="l", col=c("darkred", "darkblue"), lwd=5)
dev.off()
}
}
虽然生成绘图没有问题,但是图形和文件名的所有组合似乎都被扰乱了。此代码生成如下图形:
file1.a和file2.b. file1.a和file3.b ... etc
但是,我想仅在文件名匹配时才绘制它们(file1.a和file1.b ...等)。参数函数说什么&#34;如果文件名匹配,则为文件夹中的每个文件绘制这些图形&#34;?
答案 0 :(得分:0)
这应该有效:
# File vectors
afiles <- c('file1.a', 'file2.a', 'file3.a')
bfiles <- c('file1.b', 'file2.b', 'file3.b')
# Combine so they match
combofiles <- data.frame(a = afiles, b = bfiles)
# plotting function
plotter <- function(f1) {
graph1<-read.table(f1['a'], header=T, sep="\t")
graph2<-read.table(f1['b'], header=T, sep="\t")
png(paste("header", f1['a'], f1['b'], ".png"))
plot(graph1,graph2, type="l", col=c("darkred", "darkblue"), lwd=5)
dev.off()
}
# Apply to each row of combo
apply(combofiles, 1, plotter)
答案 1 :(得分:0)
由于某种原因,上面的代码只绘制了第一个数据集,因此我通过更改&#34;绘图仪功能&#34;找到了解决方案。 as:
plotter <- function(f1) {
graph1<-read.table(f1['a'], header=T, sep="\t")
graph2<-read.table(f1['b'], header=T, sep="\t")
png(paste("header", f1['a'], f1['b'], ".png"))
plot(graph1, type="l", col=c("darkblue") , lwd=5)
**lines(graph2, col=c( "darkred"), lwd=5)**
dev.off()
}
apply(combofiles, 1, plotter)
感谢大家的解决方案!