매우 간단한 #!
스크립트는 foo()
이라는 함수를 만듭니다.이 스크립트의 유일한 목적은 해당 인수 인 'bar'
을 반향 출력하는 것입니다.
#! /home/gavin/R/2.13-patched/build/bin/Rscript --vanilla
foo <- function(bar) {
writeLines(paste("You supplied the following information:", bar))
}
## grab command arguments passed as -args
args <- commandArgs(TRUE)
## run foo
foo(args)
우리는 commandArgs()
기능을 사용하여 쉘 스크립트에 전달 된 모든 명령 줄 인수를 잡고, 다음 스크립트의 마지막 줄에 foo()
에게 전달합니다.
foobar.R
파일에 해당 코드 비트가있는 경우 인수를 전달하고 Rscript
인터페이스를 사용하여 스크립트를 실행할 수 있습니다. 위의 실행 파일을 만들어야합니다 (chmod
). 다음과 같이
그런 다음 스크립트가 같이 전화를 작동 할 수 있습니다 : 당신이해야 할 수도 있으므로
[[email protected] ~]$ ./foobar.R Cl
You supplied the following information: Cl
을하지만 같은 불행하게도 ?Rscript
의 정보를주의 할, 표준 Windows cmd를 껍질, 스크립트와 같은 약 #!
을 모르는 내가 보여주는 기능을 사용하기 위해 다른 쉘 (Cygwin 쉘이 도움이 될 것을 제안합니다)을 설치하십시오.
업데이트 :source()
및 readline()
을 사용하십시오.
대안으로 비 대화식으로 실행하지 않고도 (즉, R GUI를 최소로 실행하고 한 줄의 코드 만 실행하지 않고) 스크립트를 source()
개만 실행하면됩니다. 당신이 할 전체 경로를 지정하지 않는 경우
R> source("barfoo.R")
What column do you want to work on? Cl
column was 'Cl'
또는 예를 들어,이 스크립트 호출 barfoo.R
에 있던 다음 R 구이 프롬프트에서 다음
dynamicwilcox <- function() {
ANSWER <- readline("What column do you want to work on? ")
if(ANSWER=="Ph") {
writeLines("column was 'Ph'")
} else if(ANSWER=="Cl") {
writeLines("column was 'Cl'")
} else {
writeLines(paste("Sorry, we don't know what to do with column", ANSWER))
}
ANSWER ## return something
}
dynamicwilcox()
, 우리는 할 수 이 :
R> source(file.choose())
readline()
는 대화 형 R 세션에서 사용할 경우 잘 작동 정말 작업에 가장 적합한 도구입니다 -이 그것을 할 막달라 정확히 것입니다.
배치 모드에서 스크립트를 실행하지만 일부 입력을 제공하려는 전제는별로 의미가 없습니다. R은 배치 모드에서 실행될 때 스크립트가 자체 포함될 것으로 기대합니다. 당신은 그것을 깨닫지 못할 수도 있지만 스크립트를 더블 클릭하면 배치 모드로 실행됩니다.
스크립트를 어떻게 실행하고 있습니까? 'readline()'은 대화식으로 만 사용될 수 있습니다. 재생산 가능한 예제가 도움이 될 것입니다. –
@Gavin Simpson : 윈도우에서 스크립트를 실행 중입니다 (cmd로 실행 됨). thmx – weblover