0

だから私は次のようにRでsqliteクエリに設定された変数を持っています:

query<-paste("SELECT ID FROM DataTable WHERE Name = \'", X, "\'", sep="")
xid<-dbGetQuery(conn, query)

X がデータベースにある場合、xid は

1 obs. of 1 varaibles

ただし、X がデータベースにない場合、xid は

0 obs of 1 variables

exists(), or Length()or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or or is.integer()or or but it's not is.null()in other things私が考えることができる他のものは、両方が存在し、同じ長さであり、null ではないため、それらを区別することはできません。

単純なことだと思いますが、私はこれが初めてです(明らかに)。

助けてくれてありがとう。

4

2 に答える 2

1

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

クエリがデータを返さない場合、dim(xid.notexist)[1]=nrow(xid.notexist)は 0 です。

于 2013-03-12T20:11:34.730 に答える
0

dbGetQueryデータフレームを返します。最初のケースでは行が 1 つあるため、1 にするnrow(xid)必要があります。2 番目のケースでは、行がゼロのデータ フレームを返す必要があるため、ゼロにするnrow(xid)必要があります。行数を確認するだけです。

于 2013-03-12T20:05:00.517 に答える