2017-01-02 27 views
-3

我正在嘗試使用sqldf與在R中創建的數據幀。我的表有2列邏輯向量。我的代碼看起來像sqldf("Select* from df where Dupe1='TRUE' or Dupe2='TRUE' '')。它返回錯誤:意外的數字常量。不明白這是什麼意思。我假設sql無法讀取R的邏輯向量。任何解決方案將不勝感激。sqldf無法讀取R中的邏輯向量

+0

在R和任何符合SQL的數據庫中,值* True *和* False *從不被引用爲字符串文字。 – Parfait

回答

1

它可能只是如何複製的東西,但在你的問題,你的SQL語句以兩個單引號結束,而不是雙引號。但是這裏最大的問題是TRUE和FALSE不是以字符串形式存儲的。 TRUE被存儲爲1. FALSE被存儲爲0.所以下面的代碼做你想要的。我添加了一個行號,以便我們可以看到哪些行被選中。

library(sqldf) 

## Create test data 
RowNum = 1:20 
Dupe1 = runif(20) > 0.5 
Dupe2 = runif(20) > 0.5 
df = data.frame(RowNum, Dupe1, Dupe2) 

sqldf("Select * from df where Dupe1=1 OR Dupe2=1") 

    RowNum Dupe1 Dupe2 
1  3 TRUE TRUE 
2  5 TRUE TRUE 
3  6 FALSE TRUE 
4  9 TRUE TRUE 
5  10 FALSE TRUE 
6  13 FALSE TRUE 
7  14 TRUE TRUE 
8  15 FALSE TRUE 
9  17 FALSE TRUE 
10  18 FALSE TRUE 
11  20 FALSE TRUE 
+1

或'sqldf(「從df中選擇*,其中Dupe1或Dupe2)'' –