在网络驱动器上查找文件的绝对路径

时间:2014-12-05 14:07:45

标签: r path knitr

我在编写一个位于网络驱动器上的markdown文件时遇到了麻烦。我正在使用rmarkdown :: render()来编织文件。我已将问题跟踪到file_path_as_absolute()函数。

我的工作目录中有一个markdown文件foo.Rmd。

> list.files()
 [1] "$RECYCLE.BIN"                               "2014-11-04-popular-wagers-distribution.pdf"
 [3] "db-connection.R"                            "desktop.ini"                               
 [5] "figure"                                     "foo.md"                                    
 [7] "foo.Rmd"                                    "game-popularity.R"                         
 [9] "My Data Sources"                            "player-data-game-monitoring.tsv"           
[11] "player-linking.R"                           "player-pca.R"                              
[13] "query-1.sql"                                "query-2.sql"                               
[15] "R"                                          "report-test-2.Rmd"                         
[17] "report-test.md"                             "report-test.Rmd"                           
[19] "report-test.xxx"                            "SQL Server Management Studio"              
[21] "test.md"                                    "test.R"                                    
[23] "test.Rmd"                                   "Thumbs.db" 

我可以找到绝对路径:

> normalizePath("foo.Rmd")
[1] "\\\\dernetapp02\\h$\\users\\AndrewCo\\myCitrixFiles\\Documents\\foo.Rmd"
Warning message:
In normalizePath(path.expand(path), winslash, mustWork) :
  path[1]="foo.Rmd": Access is denied

虽然它会产生警告,但仍然有效。我不确定为什么会收到此警告,因为我当然对该文件都有读写权限。

但是调用file_path_as_absolute(),它只是normalizePath()的包装器,会将该警告转换为错误。

> tools::file_path_as_absolute(input)
Error in normalizePath(path.expand(path), winslash, mustWork) : 
  path[1]="foo.Rmd": Access is denied

我很确定问题与文件在网络驱动器上的事实有关,因为当我对本地驱动器上的文件执行相同操作时,我没有遇到此问题。但是,如上所述,我对此文件具有读/写权限。

有没有人对这个问题的根源有任何想法?更重要的是,一个可能的解决方案?

根据建议(如下),我尝试映射到网络驱动器:

> system("net use s: \\\\dernetapp02\\h$")

这似乎很有希望,但结果却相同:

> normalizePath("s:\\users\\AndrewCo\\myCitrixFiles\\Documents\\foo.Rmd")
[1] "s:\\users\\AndrewCo\\myCitrixFiles\\Documents\\foo.Rmd"
Warning message:
In normalizePath(path.expand(path), winslash, mustWork) :
  path[1]="s:\users\AndrewCo\myCitrixFiles\Documents\foo.Rmd": Access is denied

谢谢!

祝你好运, 安德鲁。

2 个答案:

答案 0 :(得分:1)

这里的问题相同。 我结束了在本地文件夹中移动项目并使用命令file.copy复制生成的文件。

这是一个通用的解决方案,如果有人找到更好的,我感兴趣的是。

答案 1 :(得分:0)

意识到这是一个老问题,但是我只是遇到了同样的问题。对我来说,通过Windows资源管理器映射网络驱动器是可行的。

关闭当前的R会话并从映射的驱动器位置重新打开Rproj文件很重要。

从那里开始一切正常。