2015-09-10 219 views
0

这是我第一次使用R,我只需要输入一些包含一些文件的包并将输出保存在其他文件中。我有一个目录,其中有一些带有“.pdb”文件扩展名的文件。我需要在for循环中遍历每个文件,应用一些函数,并将每个文件的输出保存在一个文件中,以后我可以在Matlab中使用它。循环遍历R中某个目录中的所有文件

这些是我希望应用于每个.pdb文件的函数。

p=extractPDB("1HXH.pdb") 
cm<-build.contacts(n=p$lca,xyz=p$coords,cuts=169)$cm 

cm是我想保存在一个文件中的输出矩阵,以后在Matlab中使用。

+1

你已经试过了什么?为什么它不起作用?从小处着手:你将如何处理一个文件?你如何导出它?如果你能做到这一点,看看你如何找到目录中的所有文件(提示:'list.files')并重复你的操作。 – Heroka

+0

如果'.pdb'文件是'Protein Data Bank',您可以使用[readpdb](http://it.mathworks.com/help/bioinfo/ref/pdbread.html)函数直接在MatLab中打开它们 –

回答

0

使用特定扩展名的文件循环很容易。其实你循环的文件名。

  1. 获得目录中的所有文件的列表
  2. 只获取PDB结尾的文件
  3. 碾过名

了循环,你可能需要更改使用setwd

工作目录
all.files <- list.files() 
my.files <- grep(".*pdb", all_files, value=T) 
for(i in my_files){ 
    # do your operations here 
    p=extractPDB("1HXH.pdb") 
    cm<-build.contacts(n=p$lca,xyz=p$coords,cuts=169)$cm 
    # save 
    output.filename <- gsub("(.*?).pdb", "\\1.csv", i) 
    write.table(cm, output.filename) 
} 

保存文件有很多选项,用于读取matlab文件,可能是最好的将矩阵保存为csv文件。查看write.table的文档并调整参数,以便阅读。