본문 바로가기
Data Analysis/R

R : gsub() 함수 활용

by 불탄오징어 2013. 12. 5.
반응형

  플젝 준비기간이라 R 스크립트 공부 겸 기존 플랫폼 연구 개선 중인데 장문의 Query문의 경우 중간중간에 들어가는 변수들을 외부에서 처리하려고 하니 paste문을 많이 써야 하는 단점이 있다.. 개선할 수 있는 방법이 없을까 하다가 예전에 php 할 때 했던 템플릿 처리 방법이 생각나서 어설프게 적용해봄....(기억이 잘 안남...)


  여튼 요지는 Query 문을 따로 두고 Query 문 안에 대체할 변수위치를 지정해둔 후 해당 쿼리를 불러서 입력하고자 하는 값을 대체하는 방법으로 하는건데 gsub() 함수가 유용하네..


  쿼리문의 복잡하면 이게 편하지 않을까 생각함...


require(RJDBC);
require(rJava);

getDate <- "20131210";

drv <- JDBC(driverClass = "", classPath = "", "`");
conn <- 
	dbConnect(drv, 
		"jdbc:oracle:thin:@[주소]:1521:orcl",
		"user", "password");

query <- "SELECT * FROM [:tableName:] WHERE [:dateColName:] <= '[:dateValue:]'";

df <- 
	data.frame(matrix(
		c("[:tableName:]",		"OBS_TEMP",
		  "[:dateColname:]",	"WARN_DATE",
		  "[:dateValue:]",		getDate),
		ncol=2,
		byrow=TRUE)
	);

value.change.query <- function(query, df) {

	for(i in 1:nrow(df)) {
		query <- gsub(df[i,1], df[i,2], query, fixed=TRUE);
	}
	return(query);
	
}

query <- value.chagne.query(query, df);

dbGetQuery(conn, query);


댓글