R 스크립트를 명령 프람프트에서 실행하기
먼저 명령어 path 넣기
도스 창에서 다음과 같이 path 를 설정
path C:\Program Files\R\R-2.8.0\bin; %path%
R 스크립트
# program name : mk_generation.r
# 프로그램의 목적 : 세대 계산
# 만든이 : 박병호
# 만든 날짜 : 2009.3.9.
# 개정 사항
# 코멘트 : 10,000마리 이하만 가능. 그 이상은 시간이 너무 걸림. R에서 hash를 구현해야 속도 빨라지겠음
args <- commandArgs(TRUE)
# 인자가 2개 미만이면 에러 출력
if (length(args) < 2) {
cat("\n less argument \n")
cat(" Usage : Rscript mk_generation.r input_file_name output_file_name \n")
q()
}
pedi <- read.table(args[1], header = TRUE) # 인자의 첫번째 인자를 이용하여 자료 불러오기
pedi_rows <- nrow(pedi) # 자료 수
pedi <- cbind(pedi, gen = rep(1, pedi_rows)) # 컬럼 추가
for(k in 1:50){ # 그냥 50회 반복
for(i in 1:pedi_rows) { # 전체 animal 처리
if ( i %% 1000 == 0) cat(i, "\n") # 1000마리마다 처리했다고 표시
agen = pedi[i,3] # generation of animal
for(j in 1:2){
# process sire
parent = as.character(pedi[i,j]) # retrieve parent id and change it to character
# if parent is not missing
if(parent != "0"){
gen = pedi[parent,3] # generation of parent
if (is.na(gen)){ # gen is not available, i.e. parent id in animal column is not present
pedi[parent,] = c(0, 0, agen + 1) # add animal in pedi
pedi_rows = pedi_rows + 1
}
else {
if ( gen < agen + 1) pedi[parent,3] = agen + 1 # add 1 generation to parent generation
}
}
} # for(j in 1:2)
} # for(i in 1:pedi_rows)
} # for(k in 1:50)
write.table(pedi, file = args[2]) # 결과를 파일로 출력
위 소스를 mk_generation으로 저장
예제 자료
siredam
410
312
652
543
위 자료를 gen_ex.txt로 저장
프로그램 실행방법
rscript mk_generation.r gen_ex.txt gen_ex.gen
프로그램의 실행.
인수를 덜 주었을 때의 오류 및 사용방법 출력
결과 파일 출력
'Programming > R' 카테고리의 다른 글
R을 이용한 통계 프로그래밍 기초 제4장 난수 발생과 모의실험 (3) | 2009.03.16 |
---|---|
R을 이용한 통계 프로그래밍 기초 제3장 R 그래프 (4) | 2009.03.10 |
이미지를 외부 파일로 저장하는 R 스크립트를 명령 프롬프트에서 실행하기 (3) | 2009.03.06 |
R을 이용한 통계 프로그래밍 기초 2장 (5) | 2009.02.16 |
R 객체의 종류와 속성 (4) | 2009.02.12 |