【问题标题】:sqldf can't read logical vectors in Rsqldf 无法读取 R 中的逻辑向量
【发布时间】:2017-05-16 23:30:36
【问题描述】:

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

【问题讨论】:

  • 在 R 和任何 SQL 兼容的数据库中,值 TrueFalse 永远不会被引用为假定为字符串文字。

标签: sql r logical-operators sqldf


【解决方案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

【讨论】:

  • sqldf("Select * from df where Dupe1 OR Dupe2")
猜你喜欢
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 2016-04-03
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多