2017-01-02 4 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 »)' –

 Смежные вопросы

  • Нет связанных вопросов^_^