2014-12-05 3 views
3

У меня возникли проблемы с вложением файла уценки, который находится на сетевом диске. Я использую rmarkdown :: render() для вложения файла. Я отследил проблему до функции file_path_as_absolute().Поиск абсолютного пути для файла на сетевом диске

У меня есть файл уценки, 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 

Спасибо!

С уважением, Andrew.

+1

Вы в окнах? Если это возможно, сопоставьте сетевой путь с виртуальным диском. 'system (« net use s: \\\\ mynetwork \\ path »)' для установки виртуального диска. 'system (" net use s:/Delete ")', чтобы удалить его. – jdharrison

+0

Спасибо! Это похоже на хорошее предложение. Я обновил свой запрос с результатами. – DataWookie

ответ

0

Такая же проблема здесь. Я закончил перемещение проекта в локальной папке и копировал созданный файл с помощью команды file.copy.

Это общее решение, и если кто-то найдет меня лучше, меня интересует.

Смежные вопросы