警告:result_create 中的错误:没有这样的列:tmp

Warning: Error in result_create: no such column: tmp

我正在运行使用 sqldf 在 Shiny in R 中查询数据库。但是出现错误。

ui.R:

  observeEvent (input$uploadForTest_1, {
    inFile=input$uploadForTest_1
    inFileName=input$uploadForTest_1$name
    file <-"tss.txt"
    tmp = paste("audio/street", inFileName, sep = "/")
    res <- read.csv.sql(file,header=FALSE,sql = "select * from file where V1=tmp",sep="\t")
    print(res)
  })

我已成功运行以下查询:

res <- read.csv.sql(file,header=FALSE,sql = "select * from file where V1='audio/street/b098.wav'",sep="\t")

但是,如果我 运行 ui.R 中提到的查询,它给我的错误是 tmp 列不存在:

Warning: Error in result_create: no such column: tmp 86:

我不想在查询中使用字符串。我想使用变量名。因为我不想在查询中硬编码字符串。我可以在查询中使用变量名而不是字符串吗?如果是,那我该怎么做?我没有在 Internet 上找到解决我的问题的方法。谢谢。

您可以使用 sprintf。另一种选择是将字符串粘贴在一起,但我发现 sprintf 对于此任务要优雅得多。

> tmp <- "audio/street/somefile.txt"
> tmp <- "audio/street/somefile.txt"
> "select * from file where V1=tmp"
[1] "select * from file where V1=tmp"

> sprintf("select * from file where V1='%s'", tmp)
[1] "select * from file where V1='audio/street/somefile.txt'"

read.csv.sql 前加上 fn$,并在 SQL 语句中使用 '$tmp'

fn$read.csv.sql(file, sql = "select * from file where V1 = '$tmp'", 
  header = FALSE, sep = "\t")

有关详细信息,请参阅 ?fn 和 gsubfn 插图。请注意,sqldf 会自动加载 gsubfn 包,因此它已经可用。