for循环到cbind和write.csv

时间:2016-11-17 22:24:12

标签: csv for-loop extract

我使用mzR包使用instrumentInfo()从.mzXML文件中提取简单信息。它给了我一个带有所需信息的1x5矩阵。但是,我想对整个目录中的每个文件执行此操作,并将信息输出到一个.txt或.csv文件中。我正在考虑使用for循环但是我的R知识是有限的。请帮忙,谢谢你的时间。

library("mzR")

file<-list.files("C:/Users/sktrinh", pattern="\\.mzXML$",full.names=T,recursive=T) 

    N<-length(file)
    for (i in 1:N) {
      ms<-openMSfile(file[i])
      file.1<-as.data.frame(instrumentInfo(ms))
      m <- cbind(file.1, path=file[i])[,c(6,1,2,3,4,5)]
    write.csv(m,"C:/Users/sktrinh/mzxml_output.csv")

以下是测试.mzXML文件的链接:https://drive.google.com/file/d/0B-COYPSEsQK7bjJRVFVyVFBiNkU/view?usp=sharing

1 个答案:

答案 0 :(得分:0)

经过大量的反复试验,我写了一个工作脚本:

library("mzR")

file<-list.files("C:/Users/trinh/Downloads/", pattern="\\.mzXML$",full.names=T,recursive=T) 

mswrite<-function(z){
  ms<-openMSfile(z)
  f<-as.data.frame(instrumentInfo(ms))
  m<-cbind(f,path=z)[,c(6,1,2,3,4,5)]
}

d<-data.frame() #generate empty data.frame
N<-length(file) 
for (i in 1:N) {
  y<-mswrite(file[i])
  d<-rbind(d,y)
  }

write.csv(d,"C:/Users/trinh/Downloads/mzxml_output.csv")

如果有人能想出更好的方法来实现这一点,请加入。谢谢。