programing

명령줄(단말기)에서 R 스크립트를 사용하는 가장 좋은 방법은 무엇입니까?

powerit 2023. 5. 8. 22:26
반응형

명령줄(단말기)에서 R 스크립트를 사용하는 가장 좋은 방법은 무엇입니까?

명령줄에서 간단한 그림을 그릴 수 있는 R 스크립트가 있으면 매우 편리합니다.그러나 bash 스크립트에서 R을 실행하는 것은 전혀 편리하지 않습니다.이상적인 것은 다음과 같은 것일 수 있습니다.

#!/path/to/R
...

또는

#!/usr/bin/env R
...

하지만 저는 그 두 가지 중 어느 것도 할 수 없었습니다.

를 들어, 다옵은스로것유다입니는하지게순하수른션를.script.R그리고 그것을 호출합니다.R --file=script.R또는 그와 유사합니다.그러나 때때로 스크립트는 코드의 일부가 스크립트 외부에 존재하는 모호한 명령줄 스위치에 의존합니다..bash를 가져옵니다.는 Rprofile의 모든 입니다.--vanilla을 제외하고 암시하는.--no-init-file.

다른 옵션은 R 플래그를 저장하고 고통 없이 실행할 수 있는 bash 스크립트입니다. 그러면 R 스크립트가 호출됩니다.문제는 단일 프로그램이 두 개의 파일로 분할되어 동기화 상태를 유지하고 새 컴퓨터로 함께 전송해야 한다는 것입니다.

내가 현재 가장 싫어하는 옵션은 R을 bash 스크립트에 포함시키는 것입니다.

#!/bin/bash
... # usage message to catch bad input without invoking R
... # any bash pre-processing of input
... # etc
R --random-flags <<RSCRIPT
# R code goes here
RSCRIPT

모든 것이 하나의 파일에 있습니다.실행 가능하고 인수를 쉽게 처리할 수 있습니다.문제는 bash와 R을 이렇게 결합하면 IDE가 하나 또는 다른 하나에서 실패하지 않을 가능성이 거의 제거되고 제 마음이 매우 아프게 된다는 것입니다.

제가 빠진 더 좋은 방법이 있을까요?

『 』의 script.r:

#!/usr/bin/env Rscript

args = commandArgs(trailingOnly = TRUE)
message(sprintf("Hello %s", args[1L]))

첫 번째 줄은 쉐방 라인입니다.사용하는 것이 가장 좋습니다./usr/bin/env RscriptR 설치 경로를 하드 코딩하는 대신.그렇지 않으면 다른 컴퓨터에서 스크립트가 손상될 위험이 있습니다.

그런 다음 명령행에서 실행 파일로 만듭니다.

chmod +x script.r

명령줄에서 호출:

./script.r world
# Hello world

조금만 더 먹어보세요. littlerGNU R에 대한 해시방(즉, #!/some/path로 시작하는 스크립트) 기능과 간단한 명령줄 및 파이프 사용 기능을 제공합니다.

Miguel Sanchez의 반응은 그래야 합니다.Rscript를 실행하는 또 다른 방법은 'env' 명령을 사용하여 시스템 전체의 Rscript를 실행하는 것입니다.

#!/usr/bin/env Rscript

#!/path/to/RR은 그 자체가 스크립트이기 때문에 작동하지 않을 것입니다.execve불행합니다.

사용합니다R --slave -f script

명령줄 인수를 R 스크립트로 구문 분석하는 데 관심이 있다면 버전 2.5.x에서 R과 함께 번들로 제공되는 R 스크립트를 사용해 보십시오.

http://stat.ethz.ch/R-manual/R-patched/library/utils/html/Rscript.html

효과가 있습니다.

#!/usr/bin/Rscript

하지만 당신의 컴퓨터에 R 버전이 하나 이상 설치되어 있으면 어떻게 되는지 모르겠습니다.

이렇게 하면 됩니다.

#!/usr/bin/env Rscript

그것은 통역사에게 당신의 경로에 가장 먼저 나타나는 R을 사용하라고 말합니다.

스크립트를 실행하는 데 사용하는 프로그램에 매개 변수가 필요한 경우 #! 줄 끝에 매개 변수를 배치할 수 있습니다.

#!/usr/bin/R --random --switches --f

R을 모르기 때문에 제대로 테스트할 수 없지만, 이것은 작동하는 것 같습니다.

axa@artemis:~$ cat r.test
#!/usr/bin/R -q -f
error
axa@artemis:~$ ./r.test
> #!/usr/bin/R -q -f
> error
Error: object "error" not found
Execution halted
axa@artemis:~$

이 게시물에 추가할 메모입니다.의 최신 버전R묻힌 것 같습니다Rscript어느 정도.2015년 1월에 다운로드된 OSX의 R 3.1.2-1에 대해 찾았습니다.Rscript

/sw/Library/Frameworks/R.framework/Versions/3.1/Resources/bin/Rscript

그래서, 그런 것 대신에.#! /sw/bin/Rscript저는 제 대본의 맨 위에 다음을 사용해야 했습니다.

#! /sw/Library/Frameworks/R.framework/Versions/3.1/Resources/bin/Rscript

locate Rscript당신에게 도움이 될 수도 있습니다.

python의 rpy2 모듈을 사용할 수 있습니다.그러나 RCMD BATCH를 사용하는 것이 "올바른" 방법입니다.STDOUT에 쓰도록 수정할 수 있지만 기본값은 에 씁니다.라우팅 파일.아래 예를 참조하십시오.

[ramanujan:~]$cat foo.R
print(rnorm(10))
[ramanujan:~]$R CMD BATCH foo.R
[ramanujan:~]$cat foo.Rout

R version 2.7.2 (2008-08-25)
Copyright (C) 2008 The R Foundation for Statistical Computing
ISBN 3-900051-07-0

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

[Previously saved workspace restored]


 ~/.Rprofile loaded.
Welcome at  Fri Apr 17 13:33:17 2009
> print(rnorm(10))
 [1]  1.5891276  1.1219071 -0.6110963  0.1579430 -0.3104579  1.0072677 -0.1303165  0.6998849  1.9918643 -1.2390156
>

Goodbye at  Fri Apr 17 13:33:17 2009
> proc.time()
   user  system elapsed
  0.614   0.050   0.721

참고: --vanilla 및 기타 옵션을 사용하여 모든 스타트업 크래프트를 제거할 수 있습니다.

smallR을 사용하여 명령줄에 빠른 R 스크립트를 작성합니다.

http://code.google.com/p/simple-r/

(r디렉터리에 있는 명령)

small R을 사용하여 명령줄에서 플롯하는 방법은 다음과 같습니다.

r -p file.txt

다음은 Windows에서 MSYS bash를 사용하는 경우에 사용할 수 있습니다. Linux 상자에 R이 없기 때문에 사용할 수 없습니다.두 개의 파일이 필요합니다. runr이라는 첫 번째 파일은 파일 매개 변수로 R을 실행합니다.

# this is runr
# following is path to R on my Windows machine
# plus any R params you need
c:/r/bin/r --file=$1

chmod +x runr로 이 실행 파일을 만들어야 합니다.

스크립트 파일에서 다음을 수행합니다.

#!runr
# some R commands
x = 1
x

#! runr 라인은 명령 사용 방법, PATH 변수 설정 방법 등에 따라 runr에 대한 전체 경로를 포함해야 할 수 있습니다.

예쁘지는 않지만, 효과가 있는 것 같습니다!

언급URL : https://stackoverflow.com/questions/750786/whats-the-best-way-to-use-r-scripts-on-the-command-line-terminal

반응형