특정 데이터베이스 테이블에서 컬럼 이름을 가져 와서 다음 단계에서 새 데이터로 채울 오브젝트에 지정해야합니다.적용 루프로 for 루프를 바꾼 것은 개별 오브젝트 대신 목록의 리턴 된 목록
get_colNames_object <- function(x) {
sqltext <- paste0("dbGetQuery(poscon, \"SELECT column_name FROM information_schema.columns WHERE table_name=\'", x,"\' AND table_schema=\'my_schema\'\")")
result <- eval(parse(text = sqltext))
result <- unname(result$column_name)
assign(x, result, envir = parent.frame())
}
이는 경우에 작동하는 것 같다 :
는
이 완벽하게 작동되는 코드는 (. PostgreSQL은을 사용하지만 사용자가 원하는 RBDMS 전년 동기 대비 사용할 수있는 것은이 문제는 데이터베이스 있지만 lapply의 적절한 사용하지 않습니다) 하나의 테이블로 함수 호출하기. lapply 호출 할 때
get_colNames_object("customers")
> customers
[1] "id" "client_id" "name" "surname"
는하지만 ..... 내가 개별 개체 대신 목록의 목록을 얻을 :
tablelist <- c("customers", "sales")
lapply(tablelist, get_colNames_object)
[[1]]
[1] "id" "client_id" "name" "surname"
[[2]]
[1] "id" "product_id" "price" "client_id"
이 작동하지 않습니다 왜 어떤 힌트 목적은이 방법을 확인 반환 나의 목록? 예상되는 결과는 열 이름과 관련된 많은 개체입니다. 스키마의 모든 테이블에 하나씩.
캐서린이이 get_colNames_object ("고객") 다음 get_colNames_object를 호출 할 경우 ("판매") 환경에서 두 개의 객체를 얻습니다. 각 오브젝트는 테이블 이름이있는 오브젝트에 지정된 컬럼 이름 목록입니다. 예상 된 출력은 모든 테이블에 대한 개체입니다. – Forge
이와 같이'eval (parse (...)) '을 사용하지 마십시오. 부작용이있는 함수를 작성하지 마십시오. – Roland