我在编写一个位于网络驱动器上的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
谢谢!
祝你好运, 安德鲁。
答案 0 :(得分:1)
这里的问题相同。 我结束了在本地文件夹中移动项目并使用命令file.copy复制生成的文件。
这是一个通用的解决方案,如果有人找到更好的,我感兴趣的是。
答案 1 :(得分:0)
意识到这是一个老问题,但是我只是遇到了同样的问题。对我来说,通过Windows资源管理器映射网络驱动器是可行的。
关闭当前的R会话并从映射的驱动器位置重新打开Rproj文件很重要。
从那里开始一切正常。