Rprofile.site에서 .libPaths를 사용하여 R 기본 라이브러리 경로 변경이 작동하지 않습니다


206

관리자가 아닌 Windows에서 R을 실행하고 있습니다. 패키지를 설치할 때 다음 명령이 작동하지 않습니다.

> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable

패키지를 설치하려면 라이브러리 위치를 지정해야합니다.

install.packages("zoo", lib="C:/software/Rpackages")

패키지를로드하려면 라이브러리 위치도 지정해야합니다.

library("zoo", lib.loc="C:/software/Rpackages")

이 모든 것이 정상이지만 C:/software/Rpackages라이브러리 경로에 어떻게 든 추가 할 수 있는지 확인 하고 매번 입력 할 필요가 없었습니다.

온라인으로 검색 할 때 Rprofile.site파일 을 편집 하고 줄을 추가하는 것이 방법 중 하나라는 것을 알았 습니다.

.libPaths("C:/software/Rpackages")

그러나이 작업을 수행하고 RStudio를 시작하면 이것이 얻은 결과입니다.

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

.libPaths내가 추가 한 명령이 Rprofile.site효과가없는 것 같습니다! 왜 그런가요? 또는 더 중요한 것은 라이브러리 위치에 입력하지 않고 패키지를 설치하고로드 할 수 있도록 문제를 어떻게 해결할 수 있습니까?

참고 : RStudio를 시작하면 .libPaths()명령이 정상적으로 작동하는 것처럼 보입니다.

.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"

이상하지 않습니까?


정확히 install.packages("zoo")작동하지 않는 방식을 조금 확장 할 수 있습니까 ? 오류 메시지 등?
joran

1
@joran 나는 시도 할 때 오류 메시지를 추가 install.packages("zoo")했지만 --- 그것은 실제 질문이 아니며, 왜 작동하지 않는지 .libPaths()에 관한 Rprofile.site것입니다.
하는 것을 좋아합니다

1
R Studio 대신 RGui를 사용하면 같은 문제가 있습니까?
Dason

6
R의 라이브러리 경로가 관리자 권한이 필요한 폴더로 기본 설정되는 이유는 무엇입니까?! 확실히 사용자의 홈 디렉토리는 더 합리적인 것
geotheory

superuser.com/questions/749283/… 편집 ~ / .Renviron R_LIBS_USER = / some / path
bowen.li

답변:


171

나는 일반적으로 모든 패키지를 하나의 라이브러리에 유지하려고 시도하지만 라이브러리를 추가하려면 파일 라이브러리에 이미 존재 해야하는 새 라이브러리를 기존 라이브러리 경로에 추가하지 않는 이유는 무엇입니까?

.libPaths( c( .libPaths(), "~/userLibrary") )

또는 (그리고 이것은 userLibrary를 새로운 패키지를 넣는 첫 번째 장소로 만듭니다) :

.libPaths( c( "~/userLibrary" , .libPaths() ) )

그런 다음 (이것을 처음 쓸 때 다시 돌아 왔습니다) :

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"  

.libPaths기능은 대부분의 다른 비 그래픽 기능과 약간 다릅니다. 부작용을 통해 작동합니다. R 환경 변수를보고하고 변경하는 기능 Sys.getenv과 기능 Sys.setenv은 분리되었지만 .libPaths목표를보고하거나 변경할 수 있습니다.

R 시작 프로세스에 대한 정보는 ?Startup도움말 페이지 에서 읽을 수 있으며 RStudio 자료는 https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio에 있습니다.

귀하의 경우 RStudio가 Rprofile.site 설정을 존중하지 않거나 RStudio 기본값 중 하나에서 .Rprofile 설정을 읽고이를 무시하고있는 것 같습니다. 또한이 작업의 결과에 호출 내용이 .Library및에 추가된다는 점을 언급해야하는데 .Library.site, 이는 RStudio (또는 다른 IDE 또는 네트워크에 설치된) 호스트 R이 다른 동작을 나타내는 이유이기도합니다.

Sys.getenv()R 프로세스의 현재 시스템 환경을 리턴 하므로 다음을 사용하여 라이브러리 및 기타 경로를 볼 수 있습니다.

Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]

패키지를 저장하고 액세스하는 데 중요한 두 가지는 (현재 Linux 상자에서는 다릅니다) :

R_LIBS_SITE                          /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER                          /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/

12
나는 반전에 필요한 c()새로운 라이브러리는 사용자 지정 폴더로 이동하기 위해 벡터
geotheory

훌륭한 지적입니다. 실제로 .libPaths-function은 기본적으로 동일한 효과를 갖습니다. 후행 슬래시를 처리하는 방법에있어서 OS간에 차이가 있습니다. (Windows에서는 OK가 아닙니다). 다른 옵션이 존재합니다. 참조?.libPaths
IRTFM

5
새로운 경로는 실제로 파일 시스템에 존재해야합니다. 그렇지 않으면 라이브러리 경로에 추가되지 않습니다
jarandaf

또 다른 좋은 점입니다. 함수 이름이 다른 것을 제안하지만 먼저 file.exists경로가 누락되지 않은 경우에만 확인 하고 진행할 수 있습니다 .
IRTFM

3
나는 이것을했는데 효과가 있지만 R을 시작할 때마다 경로를 변경 해야하는 것처럼 보입니다. 다른 사람들도 마찬가지입니까?
cyrusjan

215

올바른 해결 방법은 R_LIBS_USERRStudio가 Rprofile.site 파일을 인식하도록하는 대신 환경 변수 를 원하는 라이브러리 폴더의 파일 경로 값 으로 설정 하는 것입니다.

R_LIBS_USERWindows에서 환경 변수를 설정하려면 제어판 (시스템 속성-> 고급 시스템 속성-> 환경 변수-> 사용자 변수)에서 원하는 값 (라이브러리 폴더의 경로)으로 이동하십시오.

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  

R_LIBS_USER를 설정하면 RStudio를 직접 시작하거나 파일을 마우스 오른쪽 단추로 클릭하고 "연결 프로그램"을 시작하여 RStudio를 시작하여 라이브러리가 .libPaths ()에 먼저 표시됩니다.

RStudio 바로 가기를 클릭하여 RStudio가 항상 시작되면 Rprofile 솔루션이 작동 할 수 있습니다. 이 경우 기본 작업 디렉토리를 Rprofile 이있는 디렉토리로 설정하면 충분합니다. RStudio 솔루션을 시작하기 위해 파일을 클릭하면 Rprofile 솔루션이 작동하지 않습니다. 기본 작업 디렉토리에서 작업 디렉토리가 변경되기 때문입니다.


2
합당한 적절한 솔루션!
felixmc

14
확실히 적절한 해결책. 유일한 문제는 사용자가 관리자가 아닌 경우 (이 문제가 처음 발생하는 경우) 제어판-> 사용자 계정-> 사용자 계정-> 내 환경 변경을 통해 환경 변수를 변경해야합니다 변수.
David Moye

1
Linux 명령 행에서 이에 상응하는 것을 알고 있습니까?
Diego-MX

5
물론, 이것들을 쉘 변수로 설정하십시오 (bash에서 편집 .bash_profile및 / 또는 가능 .bashrc). 여기를 참조하십시오 : unix.stackexchange.com/questions/117467/… 콘솔에서 현재 세션 전용 유형을 설정하려면export R_LIBS_USER='directory_of_your_choice'
Paweł Rumian

2
제어판을 통해 변수를 설정하는 대신 Rprofile 파일에서 기본값 R_LIB_USER를 수정했습니다. 해결책은 다음과 같습니다. 비슷한 접근법을 생각해 냈습니다. 해결책은이 질문에 대한 해결책으로 제시됩니다 stackoverflow.com/questions/31707941/…
Marco

24

코드를 .Rprofile기본 작업 디렉토리 의 파일에 배치하여 문제를 해결했습니다 .

먼저 기본 작업 디렉토리의 위치를 ​​찾았습니다.

> getwd()
[1] "C:/Users/me/Documents"

그런 다음 텍스트 편집기를 .Rprofile사용하여 다음 줄이 포함 된 간단한 파일 을 작성 했습니다.

.libPaths("C:/software/Rpackages")

마지막으로 시작 R하고 실행할 때 .libPaths()원하는 출력을 얻습니다.

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"

이것은 나를 위해 작동하지 않습니다 (BondedDust의 솔루션도 아닙니다). txt 파일을 만들어 getwd ()의 폴더에 .Rprofile로 저장했습니다.
John

2
@ 존 나는 우리가 같은 말을하고 있다고 생각합니다.
나는

3
R은 CURRENT 디렉토리가 아닌 HOME 디렉토리 에서 .Rprofile을 읽습니다 .
Crt

나는 비슷한 접근법을 생각
Marco

홈 directroy를 찾으려면 Sys.getenv("HOME")r 콘솔에서 r 명령 을 실행하십시오. 원하는 출력을 얻었는지 잘 모르겠습니다. 원하는 출력은 42가 그의 답변 stackoverflow.com/a/15170774/754550 에서 보여준 것입니다 . 그는 .libPaths를 약간 다른 방식으로 사용합니다.
miracle173


11

R 또는 Rstudio를 사용하는지 여부를 영구적으로 (각 세션마다 정의 할 필요가 없음) 개인 라이브러리를 추가 하는 솔루션 ( 여기서 SFU의 Carl Schwarz에게 감사드립니다)이 있다고 생각 합니다. 내 Mac 컴퓨터에서 기본값입니다. 나는 이것이 SO에 명시 적으로 배치 된 것을 보지 못했기 때문에 Windows와 Mac에 대해 제공 한 단계를 요약했습니다.

Windows 7 OS의 경우 :

  1. C : \ User \ Rlibs (또는 권한이있는 다른 라이브러리)와 같이 개인 라이브러리를 갖고 싶은 드라이브에 디렉토리를 만듭니다.

  2. 제어판 설정을 편집하려면 Windows 검색 창에서 "계정의 환경 변수 편집"을 검색 / 이동하십시오.

  3. "환경 변수"창의 중간에있는 "새로 작성 ..."을 클릭하십시오.

  4. "새 사용자 변수"창 에서 "변수 이름"에 R_LIBS 를 입력 하고 작성한 개인 라이브러리 디렉토리의 경로 (예 : C : \ User \ Rlibs)

  5. 확인을 클릭하면 사용자 변수 창에 변수 / 값 쌍이 표시됩니다

  6. 다시 확인을 클릭하십시오

이제 R (또는 Rstudio)을 시작하고 명령 .libPaths()을 입력 하면 생성 한 개인 라이브러리와 R 시스템 라이브러리가 표시됩니다.

Mac의 경우 :

  1. "홈"또는 "사용자 이름"디렉토리에 Rlibs 라는 폴더를 작성하십시오.

  2. 터미널 응용 프로그램을 시작하십시오

  3. 유형 : echo "R_LIBS=~/Rlibs"> .Renvrion대소 문자가 일치하는지 확인하십시오.

  4. 입력 ls -a디렉토리에있는 파일의 전체 목록을 보려면, 이제 포함해야하는 .Renvrion을

  5. 있는지 확인 .Renviron의 파일이 올바르게 설정되어있는 :more .Renviron

R / Rstudio를 실행하고 입력 .libPaths()하면 개인 라이브러리의 새로운 경로가 표시됩니다.


8

관리자 권한이없는 경우 \ R-3.1.0 \ etcRprofile.site 에 있는 -file 을 열고 다음을 추가하면 도움이 될 수 있습니다.

.First <- function(){
  .libPaths("your path here")
}

.libPath()시작시 명령을 직접 평가합니다.


4

나는 이것을 이해하는 데 실제로 어려움을 겪었다. gorkypl은 OS 및 Rstudio를 마지막으로 다시 설치할 때 위의 올바른 솔루션을 제공했지만 이번에는 환경 변수를 설정해도 해결되지 않았습니다.

R 및 Rstudio를 모두 설치 제거하고 C : \ R 및 C : \ Rstudio 디렉토리를 작성한 후 둘 다를 다시 설치했습니다.

R_LIBS_USER 사용자 변수를 선호하는 디렉토리에 정의하고 (gorkypl의 답변에 따라) 사용자 변수가로드되도록 컴퓨터를 다시 시작하십시오. Rstudio를 엽니 다. 오류는 없어야합니다.

Sys.setenv()R_LIBS_USER를 다른 라이브러리의 경로로 수정 하는 데 사용할 수 있으며 , 이는 더 쉽고 컴퓨터를 다시 시작할 필요가 없습니다.

R_LIBS_USER가 무엇으로 설정되어 있는지 확인하려면 : ?Sys.getenv()

독서 help(Startup)가 유용합니다.


2

새 버전의 R을 설치 한 후 또는 다른 방법으로 기본 패키지 라이브러리를 변경 한 경우 아래 명령을 사용하여 모든 패키지를 사용하도록 두 라이브러리를 모두 추가 할 수 있습니다. 기존 라이브러리 경로를 가져옵니다.

.libPaths()

이제 기존 경로와 이전 경로를 설정하십시오.

.libPaths(c(.libPaths(), "~/yourOldPath"))

도움이 되길 바랍니다.



1

읽어보기를 읽었습니다. 그들은 명령 줄에서 .libPaths ()를 사용하여 경로가 있는지 확인했습니다. 나는 2 개의 도서관 경로를 더 일찍 가지고 있었다. 원하는 .libpath ( "C : / Program Files / R / R-3.2.4revised / library") 명령을 사용하면 라이브러리 경로가 변경되었습니다. 명령 줄에서 .libPaths ()를 다시 입력하면 올바른 경로가 표시됩니다. 도움이 되었기를 바랍니다


1

Ubuntu에서 사용자의 기본 라이브러리 경로를 변경 하는 권장 방법 은 파일 에서 R_LIBS_USER변수 를 설정하는 것 ~/.Renviron입니다.

touch ~/.Renviron
echo "R_LIBS_USER=/custom/path/in/absolute/form" >> ~/.Renviron

0
getwd()
# [1] "C:/Users/..../software/My R studio"

위의 링크를 이중 쉼표로 복사

.libPaths(new="C:/Users/..../software/My R studio")

pakage 설치를위한 기본 경로가 변경됩니다


0

R에 들어갈 때마다 .libPath ()를 호출하지 않고 라이브러리 경로를 영구적으로 변경하려면 다음과 같이하십시오.

  1. 홈 디렉토리 아래에 .Rprofile을 작성하십시오. (~ / .R 프로파일)

  2. .libPaths(c( .libPaths(), "your new path" )) .Rprofile 파일을 입력 하고 저장하십시오.

  3. R (모든 디렉토리)을 열고 확인하고 입력 .libPaths()하면 libaray 경로가 업데이트되었음을 ​​알 수 있습니다!


-1

R이 기본 위치에 설치하는 데 문제가 있었고 패키지를 임시 폴더에 넣는 것 때문에이 문제를 조사했습니다. R과 관련된 문제가있는 Mcaffee Endpoint Security의 최신 업데이트로 밝혀졌습니다. 패키지를 설치하는 동안 위협 방지 기능을 비활성화하면 제대로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.