2010-12-28 5 views
15

나는 그래프를 생성하는 csv 파일과 R 파일을 작성하는 bash 스크립트를 가지고있다. 내 Graphs.R의bsc의 Rscript에 대한 명령 행 인수

Error in is.vector(X) : subscript out of bounds 
Calls: print ... <Anonymous> -> lapply -> FUN -> lapply -> is.vector 
Execution halted 

처음 몇 줄은 다음과 같습니다 : 다음과 같이 내가 Rscript Graphs.R 10

전화 bash는 스크립트의 끝에서

내가 얻을 응답은

#!/bin/Rscript 
args <- commandArgs(TRUE) 
CorrAns = args[1] 

내가 뭘 잘못하고 있는지 몰라? 그물에 대한 조언은 이것이 작동해야한다고 말하고 있습니다. docs 읽기 commandArgs

답변

13

과 args.sh

Rscript args.R 10 

에서 다음 bash args.sh

에서 다음 출력을 얻습니다.
[1] "10" 

과 오류가 없습니다. 필요한 경우 as.numeric(commandArgs(TRUE)[1])을 사용하여 숫자 형식으로 변환하십시오.

+0

감사합니다. 문자열로 반환되는 것을 발견했습니다. 어떻게 그것을 숫자 값으로 변환합니까? 그 대답을 찾으려고 노력 중입니다. – samar

+0

@samar'print (as.numeric (commandArgs (TRUE) [1]))'print [1] 10'입니다. – marcog

+0

답변을 찾았습니다. x <- (commandArgs (TRUE) [1]) CorrAns <- eval (parse (text = x)) – samar

1

의 그것의 아주 열심히 만드는 감각, 당신이 --args와 스크립트를 호출하지 않는 한 당신이 commandArgs()에 대한 호출에서 TRUE을 제거 할 필요가있을 수 있습니다 보인다. 그 중 하나 또는 Rscript Graphs.R --args 10에 전화해야합니다.

사용

commandArgs(trailingOnly = FALSE)

인수

trailingOnly 논리적

. 인수 후 --args 후 반환해야합니까?

+0

나는 이것을 시도하고 다음 오류 메시지가있어 – samar

+0

고마워.나는 이것을했지만 오류 메시지는 처음에보고 한 내용과 동일합니다. – samar

+0

@samar 새로운 답변을보고 도움이되는지 확인하십시오. – marcog

5

그냥 추측, 아마도 당신이 ?CommandArgs의 값 섹션 있기 때문에, 숫자에 문자에서 CorrAns을 변환해야하는 것은 말합니다 :

이름 실행 파일의 과 사용자가 제공을 포함하는 문자 벡터 명령 행 인수.

UPDATE : 그것은있을 수 쉽게로 다음 args.R

에 다음
print(commandArgs(TRUE)[1]) 

#!/bin/Rscript 
args <- commandArgs(TRUE) 
(CorrAns = args[1]) 
(CorrAns = as.numeric(args[1])) 
+0

감사. 그걸 어떻게 구현해야할지 모르겠습니다. R에서 변수 이름이 문자 또는 숫자와 연결되어 있다고 생각하지 않았습니다. 그러나 R Intro 책을 다시 점검 할 것입니다. – samar

+0

@samar 필자는 업데이트 된 답변에서와 마찬가지로'as.numeric (args [1]) '을 시도해 볼 것을 제안합니다. –

+0

고마워. 이것은 R이 나를위한 새로운 경험 인 것처럼 나를위한 새로운 사이트입니다. 둘 다 큰 만족을 제공합니다. – samar

0

Rscript args.R 10 여기서 10은 R 스크립트에 전달할 숫자 값입니다.

print(as.numeric(commandArgs(TRUE)[1])은 변수에 할당 할 수있는 값을 출력합니다.

+0

이것은 업데이트 된 답변과 동일하며 "최고"로 받아 들인 답이 귀하의 질문에 답변하지 않습니다. –

+0

Joshua, 내가 아는 한, marcog의 대답을 나의 필요에 맞게 조정 한 다음 "최고"대답으로 입력했습니다. 나는 당신의 최신 대답이 그 당시에 보였던 것을 생각하지 않는다. 그러나 도움을 주셔서 감사합니다. – samar