2014-12-05 7 views
3

네트워크 드라이브에있는 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 

이 경고를 생성하지만이 작동합니다. 나는 확실히 파일에 대한 읽기 및 쓰기 권한을 가지고 있기 때문에 왜이 경고 메시지가 나올지 잘 모르겠습니다.

그러나 normalizePath()에 대한 래퍼 인 file_path_as_absolute()를 호출하면 해당 경고가 오류로 바뀝니다.

> 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

Windows에 있습니까? 그렇다면 네트워크 경로를 가상 드라이브에 매핑하십시오. 'system ("net use s : \\\\ mynetwork \\ path")'를 사용하여 가상 드라이브를 설정하십시오. 'system ("net use s :/Delete")'명령을 사용하십시오. – jdharrison

+0

고마워요! 그것은 좋은 제안처럼 보입니다. 쿼리 결과를 업데이트했습니다. – DataWookie

답변

0

동일한 문제가 여기에 있습니다. 프로젝트를 로컬 폴더로 이동하고 생성 된 파일을 file.copy 명령으로 복사하는 작업이 종료되었습니다.

일반적인 해결책이며 누군가가 더 나은 것을 발견하면 관심이 있습니다.

관련 문제