首页 > 解决方案 > if 函数中的语句未执行

问题描述

我用 RSQLite 创建了一个数据库, connection= conn。在这个数据库中是一个dummy带有key和的数据表text

conn <- dbConnect(RSQLite::SQLite(), "~/path.db")

dbExecute(conn,"CREATE TABLE IF NOT EXISTS 'dummy' (
          key CHAR(27) PRIMARY KEY,
          text TEXT)")

我创建了一个函数dummy_func。我的问题是,if (! is.null(conn))当我用dummy_func("key1"). 但是,如果我! is.null(conn)在控制台中输入,我会得到一个TRUE. 所以,条件应该有效,对吗?

key <- as.character("key1")

dummy_func <- function(key, conn=NULL)
{
  if (! is.null(conn))  {
    qry <-
      dbSendQuery(conn,
                  "SELECT key FROM dummy WHERE key=key1")
    dbBind(qry, key)
    output <- dbFetch(qry)
  }

  if (! identical(output$key, character(0))) {
    ...
  } else {
 
      if (! is.null(conn))  {
        qry2 <-
          dbSendQuery(
            conn,
            "INSERT INTO dummy (key,text) VALUES(?,?)"
          )
      }
    }
  }
}
dummy_func("key1")

这是您可以看到的错误消息,即output未创建。

Error in identical(output$key, character(0)) : object 'output' not found

标签: rsqlitersqlite

解决方案


推荐阅读