setwd()在函数内部工作很奇怪?

时间:2019-10-18 06:52:50

标签: r

我具有使用file.choose()选择文件的功能。当我在脚本中调用它时,我希望它打开要在其中选择文件的特定目录。函数内部有一个循环,我需要选择一堆文件。第一次在工作目录中打开它,这是可以预见的。我将setwd()放入其中以将所需的目录作为工作目录,以便在那里选择文件。但是,当对话框下次打开时,它又是旧的工作目录。但是下一次是我需要的目录。如果我选择其他文件夹,则它的工作原理相同-下次是旧目录,然后是新目录。我写了一个简短的函数来重现行为:

foo <- function() {
  files <- NULL
  for (i in c(1,2,3,4,5)) {
    x <- file.choose()
    y <- dirname(x)
    setwd(y)
    print(y)
    print(getwd())
  }

}

只需调用此函数,然后尝试选择不同或相同目录中的文件。您可以看到目录名称是新的,getwd()表示已设置新的工作目录,但在上一个目录中将打开下一个文件选择对话框。 请记住,我需要使用file.choose()函数,因为它在Windows和Unix之类的无头操作系统上均可工作。 当我不使用setwd()时,它始终是旧的工作目录。

0 个答案:

没有答案