명령 행에서 R 스크립트 실행


답변:


671

출력을 터미널에 인쇄하려면 Rscript를 사용하는 것이 가장 좋습니다

Rscript a.R

참고 사용하는 경우 그 R CMD BATCH a.R대신에 표준 출력에 출력을 리디렉션 및 a.Rout라는 터미널 새 파일에 표시하는 만들어집니다.

R CMD BATCH a.R
# Check the output
cat a.Rout

Rscript를 사용할 때주의해야 할 또 다른 사항은 methods기본적으로 패키지를 로드하지 않아 혼동 될 수 있다는 것입니다. 따라서 메소드가 제공하는 것에 의존하는 경우 스크립트에 명시 적으로로드 할 수 있습니다.

./a.R스크립트를 호출 하는 방법 을 실제로 사용하려면 스크립트 #!상단에 적절한 것을 추가 할 수 있습니다

#!/usr/bin/env Rscript
sayHello <- function(){
   print('hello')
}

sayHello()

나는 또한 당신이 * UNIX 시스템에서 실행하는 경우 유용한 있음을 유의한다 의 littler 스크립트를 통해 반짝 응용 프로그램을 실행하는 데의 littler 사용할 필요가있을 수 있습니다 R.에 쉽게 명령 줄 배관을 제공하는 패키지? 자세한 내용은 이 질문에서 찾을 수 있습니다 .


28
#없이! 명령 행은 명령을 해석하는 동일한 인터프리터를 사용하여 명령 행 스크립트로 실행하려고합니다. 파일이 .R 또는 .r 접미사로 끝나더라도 R로 간주되지 않습니다. #! 파일에 어떤 언어가 포함되어 있는지 명령 줄에 알려줍니다.
Spacedman

4
나는 몇 년 동안 여기에 몇 가지 질문을했고 더 작고 Rscript를 모두 언급 할 수있었습니다. 가장 중요한 것은 사람들에게 당신이 한 것처럼 R CMD BATCH끔찍한 말을하는 것입니다. 그
외에는

@Dason 나는 또한 R 스크립트로 작업하고 있으며 Java 프로그램에서 R 스크립트를 실행하려고하는데 오류가 발생합니다. 여기 내 질문이 있습니다. 도울 수 있는지 확인하십시오. 안녕하세요 함수 예제를 사용하여 간단하게 만들었습니다.
user1950349

명령 자체에서 라이브러리 경로를 수정하는 방법이 있습니까? R CMD INSTALL -l ~/R/lib-dev
mikemtnbikes

@mikemtnbikes 내가 아는 것은 아닙니다. 스크립트 내에서 .libPaths ()를 변경하기 위해 항상 무언가를 추가 할 수 있습니다. 그러나 Rscript 매뉴얼 페이지에서 지적한 것과 같은 옵션은 보이지 않습니다.
Dason

107

이것은 질문에 직접 대답하지 않습니다. 그러나 누군가 터미널에서 R의 oneliner를 실행하기를 원하기 때문에 여기에 올 수 있습니다. 예를 들어 누락 된 패키지를 설치하고 종료하려는 경우이 oneliner가 매우 편리 할 수 ​​있습니다. 패키지를 놓친 것을 갑자기 발견하고 원하는 곳에 설치하고 싶습니다.

  • 기본 위치에 설치하려면

    R -e 'install.packages(c("package1", "package2"))'
  • root권한 이 필요한 위치에 설치하려면

    R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' 

5
명령을 실행하려면 Rscript -e "getwd()"터미널 에서도 사용할 수 있습니다 . Rscript는 전체 R 시작 메시지가 아닌 명령 출력 만 인쇄합니다.
Paul Rougieux

r -e "cat(getwd(),'\n')"설치가 적을 경우 에도 사용할 수 있습니다 . 에서 이 답변 더크 Eddelbuettel은의 littler과 RSCRIPT의 차이를 설명합니다.
Paul Rougieux

2
내 문제를 기대해 주셔서 감사합니다! 한 가지 더 필요했습니다 :R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
Erin

4
R -r 'options(warn=2); install...'설치가 실패하는 경우 실행을 중지하고 0이 아닌 오류 코드를 얻기 위해 사용해야 합니다. 그렇지 않으면 모든 install.packages오류는 경고 일뿐입니다.
rvernica


21

?Rscript터미널에서 R 스크립트를 실행 하려면 명령 이 필요합니다 .

http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html을 확인 하십시오.

## example #! script for a Unix-alike

#! /path/to/Rscript --vanilla --default-packages=utils
args <- commandArgs(TRUE)
res <- try(install.packages(args))
if(inherits(res, "try-error")) q(status=1) else q()

이것은 R 스크립트를 작성 / 실행하는 방법의 예일뿐입니다. 파일에 #! / path / to / rscript를 추가 한 다음 chmod + x <your script.r> 및 ./<your script.r>
Mehul Rathod

10

여러 명령으로 knitr 및 rmarkdown을 사용하여 명령에서 Rmd를 실행 한 다음 RPub에 HTML 파일을 업로드하는 방법

예제는 다음과 같습니다. 두 개의 라이브러리를로드하고 R 명령을 실행하십시오.

R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'

3
라이브러리로드를 건너 뛰는 것이 더 간단합니다. R -e 'markdown::rpubsUpload("normalDev","NormalDevconJuly.html")'
gregmacfarlane

3

* Unix 시스템에서 Rscript를 사용하는 또 다른 방법은 프로세스 대체 입니다.

Rscript <(zcat a.r)
# [1] "hello"

허용되는 답변과 똑같이 작동하지만 명령 줄의 힘을 저장하지 않고 파일을 조작하고 실행할 수 있습니다.

Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"

Rscript -e "Rcode"그것과 유사하게 파일로 저장하지 않고 실행할 수 있습니다. 따라서 R 코드를 생성하는 스크립트와 함께 사용할 수 있습니다. 예 :

Rscript <(echo "head(iris,2)")
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa
# 2          4.9         3.0          1.4         0.2  setosa

3

문서화를 위해 때로는 다음과 같이 스크립트를 실행해야합니다 sudo.

sudo Rscript path/to/your/file.R

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