【问题标题】:R:Using a character as argument in a functionR:在函数中使用字符作为参数
【发布时间】:2023-09-11 19:55:01
【问题描述】:

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

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

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

我的问题是,路径将在函数中替换为引号。至少我的函数中有以下格式。

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

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

我提前感谢您帮助 R 的初学者 :)

【问题讨论】:

    标签: r function character


    【解决方案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:/...../"
    

    【讨论】:

    • foo .mdb,.accdb)};DBQ= %s" , 路径) 连接 .mdb,.accdb)};DBQ=C:/...../”但是它仍然没有连接到我的数据库。如果我将真正的“路径”(不是变量)替换为我可以连接的函数。
    最近更新 更多