R 运行sqlite时为空变量
因此,我在R中将一个变量设置为sqlite查询,如下所示:R 运行sqlite时为空变量,r,sqlite,empty-list,R,Sqlite,Empty List,因此,我在R中将一个变量设置为sqlite查询,如下所示: query<-paste("SELECT ID FROM DataTable WHERE Name = \'", X, "\'", sep="") xid<-dbGetQuery(conn, query) 但是如果X不在数据库中,那么xid就是 0 obs of 1 variables 我不能使用exists(),或Length()或is.integer()或is.null()或我能想到的任何东西来区分它们,因为它们都存
query<-paste("SELECT ID FROM DataTable WHERE Name = \'", X, "\'", sep="")
xid<-dbGetQuery(conn, query)
但是如果X不在数据库中,那么xid就是
0 obs of 1 variables
我不能使用exists()
,或Length()
或is.integer()
或is.null()
或我能想到的任何东西来区分它们,因为它们都存在,长度相同且不为null
我相信这很简单,但我对这很陌生(显然)
感谢您的帮助。
dbGetQuery
返回数据帧。在第一种情况下,它有一行,因此nrow(xid)
应该是1。在第二种情况下,它应该返回一个具有零行的数据帧,因此nrow(xid)
应该为零。只需检查行数。您可以使用nrow
或dim
这里是一个可复制的示例:
library(RSQLite)
driver <- dbDriver("SQLite")
conn <- dbConnect(driver, dbname='DB_KEY')
mydf <- read.table(text ='ID NAme
1 2 OtherData1
2 2 OtherData2
3 2 OtherData3
4 2 OtherData4
5 2 OtherDat',head=T)
dbWriteTable(conn, "DataTable", mydf, append=TRUE)
dbDisconnect(conn)
X <- 'OtherData1'
query<-paste("SELECT type FROM Data1 WHERE name = \'", X , "\'", sep="")
conn <- dbConnect(driver, dbname='DB_KEY')
xid<-dbGetQuery(conn, query)
dim(xid)
[1] 1 1
dim(xid.notexist)
[1] 0 1
库(RSQLite)
司机
library(RSQLite)
driver <- dbDriver("SQLite")
conn <- dbConnect(driver, dbname='DB_KEY')
mydf <- read.table(text ='ID NAme
1 2 OtherData1
2 2 OtherData2
3 2 OtherData3
4 2 OtherData4
5 2 OtherDat',head=T)
dbWriteTable(conn, "DataTable", mydf, append=TRUE)
dbDisconnect(conn)
X <- 'OtherData1'
query<-paste("SELECT type FROM Data1 WHERE name = \'", X , "\'", sep="")
conn <- dbConnect(driver, dbname='DB_KEY')
xid<-dbGetQuery(conn, query)
dim(xid)
[1] 1 1
dim(xid.notexist)
[1] 0 1