2017-10-01 1 views
0

저는 여기에서 새로 왔으며 R의 사용에 대한 많은 지식이 없습니다. 현재의 문제에 대한 해결책을 찾을 수 없습니다. 문자 (경로)를 다음과 같이 사용함 : 내 기능에 대한 논쟁.R : 함수에서 문자를 인수로 사용하기

Path <- "C:/...../" 

foo <-function(Path){ 
     Driver <- "Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=Path" 
     connect <- odbcDriverConnect(Driver) 
     return(connect) 
} 

내 문제는 해당 경로가 따옴표로 바뀝니다. 적어도 필자는 다음과 같은 형식을 가지고 있습니다.

...DBQ="C:/..../"" 

따옴표를 지우려면 noquote 또는 cat을 사용하여이 문제를 해결하려고했지만 도움이되지 않습니다.

은 당신이 당신은 Path를 삽입 sprintf()을 사용할 수 있습니다

답변

1

: R에 초보자를 돕고 있다는 사전에 감사합니다.

Path <- "C:/...../" 
sprintf("Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=\"%s\"", Path) 
# [1] "Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=\"C:/...../\"" 

그래서 업데이트 된 기능은

foo <- function(Path) { 
    Driver <- "Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=\"%s\"" 
    connect <- odbcDriverConnect(sprintf(Driver, Path)) 
    return(connect) 
} 

이 모든 놀라운 용도 help(sprintf)를 참조 할 것.


업데이트 : 당신이 Path 주위에 따옴표를 할 것인지가 나에게 분명하지 않다 때문에, 내가 그들없이 그것을 가지고하는 방법이 포함됩니다. 문자열에서 따옴표를 사용하지 않으려면 sprintf() 형식에서 따옴표를 제거하십시오.

Path <- "C:/...../" 
sprintf("Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=%s", Path) 
# [1] "Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=C:/...../" 
+0

foo를 <- 기능 (패스) { 드라이버 << -의 sprintf ("드라이버 = {Access 드라이버 (* .MDB *에만 적용)}; DBQ = %의 S."경로) 연결 << - odbcDriverConnect (드라이버); "; DBQ = C 드라이버 = {Access 드라이버 (. * .MDB, *에만 적용)} : /...../" : 반환 내가 올바른 형식을 얻을이 솔루션을 } 을 (연결) 하지만 여전히 내 데이터베이스에 연결하지 않습니다. 만약 내가 진정한 "경로"(변수가 아닌)를 연결할 수있는 함수로 대체한다면. – Leo96