------------------- R package와 연동하여 Rank normalization 구하기 --------------------------
#file read ./value1/value_div glob.glob
import glob
import os

files = glob.glob('./value1/value_div/*.txt')
line_count = 0

#이렇게 읽혀진다.
for file in files:
	print file
	line_count += 1
	_file = file
	
	# R 파일을 만들기
	header = 'x = read.table('/data/GDSfull/gds_value/'+ _file +'', header=TRUE, sep='\\t')'
	
	ar = _file.split('/')
	footer = 'write.table(w, ''+'/data/GDSfull/gds_value/value1/'+ ar[3] +'', sep='\\t', row.names=FALSE)'
	
	sf = open('./R/'+ar[3]+'.R', 'w')
	
	sf.write(header)
	sf.write('\n')
	sf.write('f<-function(a, b){')
	sf.write('\n')
	sf.write('	g <- (a-1)/(b-1)')
	sf.write('\n')
	sf.write('	return (g)')
	sf.write('\n')
	sf.write('}')
	sf.write('\n')
	sf.write('r = rank(x[[3]])')
	sf.write('\n')
	sf.write('m = max(r)')
	sf.write('\n')
	sf.write('z = cbind(x,r)')
	sf.write('\n')
	sf.write('rank_normal = f(r, m)')
	sf.write('\n')
	sf.write('w = cbind(z, rank_normal)')
	sf.write('\n')
	sf.write(footer)
	sf.write('\n')
	# R 실행하기
	
	sf.close()
	r_script = './R/'+ar[3]+'.R '
	log_script = './R/log/'+ar[3]+'.Rout'
	cmd = 'R CMD BATCH ' + r_script + log_script
	print cmd
	os.system(cmd)

+ Recent posts