R:在函数中使用字符作为参数

时间:2017-10-01 20:20:30

标签: r function character

我是新来的,我对R的使用知之甚少。我无法找到解决当前问题的方法:使用字符(Path)作为我函数的参数。

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

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

我的问题是,Path将在带引号的函数中被替换。至少我的函数中有以下格式。

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

我尝试使用noquote或cat来修复此问题以删除引号,但它没有帮助。

我事先感谢你在R中帮助初学者:)

1 个答案:

答案 0 :(得分:1)

您可以使用sprintf()插入Path

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:/...../"