for循环,用于分析许多文件

时间:2019-11-13 16:46:00

标签: r function loops for-loop

我正在尝试使用for循环编写R脚本,以执行统计分析并为每个文件生成图。

我的文件以.txt结尾 这是我的脚本,但需要进行如下改进。

files <- list.files(path="/Users/MD/Desktop/Files/", pattern="*.txt")
for (i in files){
  i_automean <- mean(i[1:5651,10])
  i_xmean <- mean(i[5652:7977,10])
  barplot(i[,10]/i_automean, ylim = c(0,2.5))
  abline(h=1, col ="red", lwd =3)
  abline(h=22.06126/i_automean, col ="red", lwd =3)
  abline(v=2300*1.2, col="blue", lwd =3)
  abline(v=5651*1.2, col="blue", lwd=3)
  pdf(i.pdf, "/Users/MD/Desktop/Files/");
  dev.off()
} 

Error in i[1:5651, 10] : incorrect number of dimensions

当我为每个文件一个一个地运行每个命令时,我没有收到错误:

我一步一步运行的命令是:

File1 <- read.table(file = "/Users/MD/Desktop/Files/File1.txt")
File1
File1_automean <- mean(File1[1:5651,10])
File1_automean
File1_Xmean <- mean(File1[5652:7977,10])
File1_Xmean
barplot(File1[,10]/18.02876, ylim = c(0,2.5))
abline(h=1, col ="red", lwd =3)
abline(h=22.06126/18.02876, col ="red", lwd =3)
abline(v=2300*1.2, col="blue", lwd =3)
abline(v=5651*1.2, col="blue", lwd=3)

注意:18.02876是File1_automean结果。

1 个答案:

答案 0 :(得分:0)

您对此解决方案有何看法?

files <- list.files(path="/Users/MD/Desktop/Files/", pattern="*.txt")
setwd("/Users/MD/Desktop/Files")
for (j in 1:length(files)){
  i <- read.table(files[j])
  i_automean <- mean(i[1:5651,10])
  i_xmean <- mean(i[5652:7977,10])
  barplot(i[,10]/i_automean, ylim = c(0,2.5))
  abline(h=1, col ="red", lwd =3)
  abline(h=22.06126/i_automean, col ="red", lwd =3)
  abline(v=2300*1.2, col="blue", lwd =3)
  abline(v=5651*1.2, col="blue", lwd=3)
  pdf(paste0(files[j],".pdf"))
  graphics.off()
}