在R中,如何为父目录中的每个文件夹调用相同的脚本?

时间:2015-05-20 14:34:21

标签: r for-loop dicom subdirectory

我正在尝试将相同的脚本应用于同一目录中的几个文件夹。另外,该脚本适用于每个文件夹,但不适用于我使用以下代码:

 parent.folder <- "C:/R_Files/Data/DICOM"
    sub.folders <- list.dirs(parent.folder, recursive=TRUE)[-1]
    r.scripts <- file.path(parent.folder, "general_extract.r")
    # Run scripts in sub-folders 
    for(i in sub.foldes) {
      source(i)
    }

它显示错误:文件错误(文件名,&#34; r&#34;,encoding = encoding):   无法打开连接

脚本在这里:

DCM <- readDICOM()
mAs <- extractHeader(DCM$hdr, "Exposure", FALSE)
mat = matrix(data=mAs, ncol=1)
write.table(mat, file="curve.txt", row.names=FALSE, col.names=FALSE,quote=FALSE)

是否可以重写将应用的脚本&#34; general_extract.r&#34;到主目录中的每个文件夹并创建具有特定名称的txt文件,该文件与子文件夹的名称相关?

1 个答案:

答案 0 :(得分:2)

为不同文件夹中的文件运行同一组命令的最佳方法是在每次重新获取文件之前更改工作目录。例如

parent.folder <- "C:/R_Files/Data/DICOM"
sub.folders <- list.dirs(parent.folder, recursive=TRUE)[-1]
r.scripts <- file.path(parent.folder, "general_extract.r")
# Run scripts in sub-folders 
for(i in sub.folders) {
  setwd(i)
  source(r.scripts)
}

setwd()将更改R的工作目录,其中包括默认情况下读取和写入文件的位置。