수색…


소개

많은 데이터 파일에 R 분석을 정기적으로 적용하거나 다른 사람에게 반복 분석 방법을 제공하려는 경우 실행 가능한 R 스크립트는 사용자에게 친숙한 방법입니다. 사용자 또는 사용자가 R 을 호출하고 source(.) 또는 함수 호출을 통해 R 내에서 스크립트를 실행하는 대신 사용자는 단순히 스크립트 자체를 프로그램 인 것처럼 호출 할 수 있습니다.

비고

표준 입력 / 출력 채널을 표현하려면 함수 file("stdin") (파이프를 통해 터미널 또는 다른 프로그램에서 입력), stdout() (표준 출력) 및 stderr() (표준 오류)을 사용하십시오. stdin() 함수는 존재하지만 R에 준비된 스크립트를 제공 할 때는 사용자 입력 대신 스크립트의 다음 줄을 읽으므로 stdin() 함수를 사용할 수 없습니다.

독립형 R 프로그램의 기본 구조 및 호출 방법

첫 번째 독립형 R 스크립트

독립 실행 형 R 스크립트는 프로그램 R (Windows에서는 R.exe 에 의해 실행되지 않고 기본적으로 R 설치에 포함 된 Rscript ( Rscript.exe ) 프로그램에 의해 실행됩니다.

이 사실을 암시하기 위해 독립형 R 스크립트는 Shebang 행 이라는 특수 행으로 시작합니다.이 행에는 #!/usr/bin/env Rscript 있습니다. Windows에서는 추가 조치가 필요하며 나중에 다시 설명됩니다.

다음의 간단한 독립형 R 스크립트는 히스토그램을 입력으로받은 숫자의 "hist.png"파일 이름으로 저장합니다.

#!/usr/bin/env Rscript

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

독립형 R 스크립트의 몇 가지 주요 요소를 볼 수 있습니다. 첫 번째 줄에는 Shebang 선이 있습니다. cat("....\n") 은 사용자에게 메시지를 출력하는 데 사용됩니다. file("stdin") 콘솔상의 사용자 입력"을 데이터 원점으로 지정할 때마다 file("stdin") 사용하십시오. 이것은 여러 데이터 읽기 기능 ( scan , read.table , read.csv , ...)에서 파일 이름 대신 사용할 수 있습니다. 사용자 입력이 문자열에서 숫자로 변환 된 후 플롯이 시작됩니다. 파일에 쓰는 명령을 플로팅하는 것은 두 개의 명령으로 묶어야한다는 것을 알 수 있습니다. 이것들은이 경우 png(.)dev.off() 입니다. 첫 번째 기능은 원하는 출력 파일 형식 (기타 일반적인 선택은 jpeg(.)pdf(.) )에 따라 다릅니다. 두 번째 함수 인 dev.off() 가 항상 필요합니다. 파일에 플롯을 기록하고 플로팅 프로세스를 종료합니다.

독립형 R 스크립트 준비

Linux / Mac

독립형 스크립트의 파일은 먼저 실행 가능해야합니다. 파일을 마우스 오른쪽 버튼으로 클릭하고 시작 메뉴에서 "속성"을 연 다음 "권한"탭에서 "실행 파일"확인란을 선택하면됩니다. 또는 명령

chmod +x PATH/TO/SCRIPT/SCRIPTNAME.R

터미널에서 호출 할 수 있습니다.

Windows

각 독립 실행 형 스크립트의 경우 배치 파일을 다음 내용으로 작성해야합니다.

"C:\Program Files\R-XXXXXXX\bin\Rscript.exe" "%~dp0\XXXXXXX.R" %*

배치 파일은 일반 텍스트 파일이지만 *.txt 확장자를 제외한 *.bat 확장자 *.bat 집니다. notepad ( Word 아님) 같은 텍스트 편집기를 사용하여 작성하고 저장 대화 상자에 파일 이름을 "FILENAME.bat" 따옴표로 묶으십시오. 기존 배치 파일을 편집하려면 파일을 마우스 오른쪽 버튼으로 클릭하고 "편집"을 선택하십시오.

위에 표시된 코드를 적용해야합니다 XXX... 쓰여집니다 :

  • R 설치가있는 올바른 폴더를 삽입하십시오
  • 스크립트의 올바른 이름을 삽입하고이 배치 파일과 동일한 디렉토리에 배치하십시오.

코드의 요소 설명 : 첫 번째 부분 인 "C:\...\Rscript.exe" 는 Windows에 Rscript.exe 프로그램의 위치를 ​​알려줍니다. 두 번째 부분 인 "%~dp0\XXX.R"Rscript 에 배치 파일과 동일한 폴더에있는 R 스크립트를 실행하도록 지시합니다. %~dp0 은 배치 파일 폴더를 나타냅니다. 마지막으로 %* 는 배치 파일에 지정한 모든 명령 줄 인수를 R 스크립트로 전달합니다.

배치 파일을 두 번 클릭하면 R 스크립트가 실행됩니다. 배치 파일에서 파일을 드래그하면 해당 파일 이름이 R 스크립트에 명령 줄 인수로 제공됩니다.

littler를 사용하여 R 스크립트 실행

littler (발음 된 작은 r ) ( cran )는 다른 기능 외에도 littler의 r 명령으로 명령 줄에서 R 스크립트를 실행할 수있는 두 가지 가능성을 제공합니다 (Linux 또는 MacOS에서 작동 할 때).

littler 설치

R :

install.packages("littler")

r 의 경로는 다음과 같이 터미널에 인쇄됩니다.

You could link to the 'r' binary installed in
'/home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r'
from '/usr/local/bin' in order to use 'r' for scripting.

시스템의 명령 행에서 r 을 호출하려면, symlink가 필요합니다 :

ln -s /home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r /usr/local/bin/r

apt-get 사용 (Debian, Ubuntu) :

sudo apt-get install littler

표준 .r 스크립트와 함께 littler 사용

littler 에서 r 을 사용하면 스크립트를 변경하지 않고 독립형 R 스크립트를 실행할 수 있습니다. 예제 스크립트 :

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

shebang은 스크립트 상단에 없습니다. hist.r 과 같이 저장하면 시스템 명령에서 직접 호출 할 수 있습니다.

r hist.r

묶인 스크립트에서 littler 사용하기

또한 shebang을 사용하여 littler로 실행 가능한 R 스크립트를 만들 수도 있습니다

#!/usr/bin/env r

스크립트의 맨 위에 해당 R 스크립트는 chmod +X /path/to/script.r 로 실행 가능해야하며 시스템 터미널에서 직접 호출 할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow