sqldf无法读取R中的逻辑向量

时间:2017-01-02 22:17:30

标签: sql r logical-operators sqldf

我正在尝试使用sqldf和在R中创建的数据帧。我的表有2列逻辑向量。我的代码看起来像sqldf("Select* from df where Dupe1='TRUE' or Dupe2='TRUE' '' )。它返回Error:意外的数字常量。不明白这意味着什么。我假设sql无法读取R的逻辑向量。任何解决方案都将不胜感激。

1 个答案:

答案 0 :(得分: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