R将工作目录设置为文件夹

时间:2015-02-16 21:32:07

标签: r

我正在尝试将工作目录设置为函数中的其他子文件夹。我希望打印命令打印

C:/Users/Blah/Desktop/dir2/SUBFOLDER 
而是打印

C:/Users/Blah/Desktop/dir2

然而,当我在控制台中运行dirs时,我得到了:

C:/Users/Blah/Desktop/dir2/SUBFOLDER 
...(Much longer list)
像我预期的那样。这是我的代码:

temp<-function(path)
{
  print(path) #output is C:/Users/Blah/Desktop/dir2
  setwd(path)
  print(getwd())
  xml=xmlParse("filename.xml")
  ...
}

dirs<-list.dirs("C:/Users/Blah/Desktop/dir2")
lapply(dirs,temp)#apply function tempt to every item in dirs

2 个答案:

答案 0 :(得分:0)

你的问题很难理解。

list.dirs将返回(默认情况下)相对于当前工作目录的路径。

如果更改工作目录,则相对路径无效。

您可以尝试在list.dirs中使用full.names = TRUEtemp函数将工作目录恢复为原始状态

temp <- function(path) {
           owd <- getwd()
           on.exit(setwd(owd))
           print(path) 
           setwd(path)
         print(getwd())
    }

更好的想法可能是,只需将相应的文件名传递给xmlParse(或者您正在执行的任何操作),而不是弄乱工作目录

files <- list.files(pattern = '\\.xml$', recurvise = TRUE)
XML <-   lapply(files, xmlParse)

答案 1 :(得分:0)

你检查过list.dirs()的可选参数吗? (https://stat.ethz.ch/R-manual/R-devel/library/base/html/list.files.html

文档说默认情况下,答案包括&#34;路径&#34;本身,所以你的函数temp将首先应用于你给list.dirs(),&#34; C:/ Users / Blah / Desktop / dir2&#34;的目录。 您可能想尝试使用list.dirs(&#34; C:/ Users / Blah / Desktop / dir2&#34;,recursive = FALSE)(如果它可以满足您的需求)