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

프로그램의 실행.

인수를 덜 주었을 때의 오류 및 사용방법 출력

결과 파일 출력





+ Recent posts