Я пытаюсь использовать sqldf с фреймворком данных, созданным в R. Моя таблица имеет 2 столбца логических векторов. Мой код выглядит как sqldf("Select* from df where Dupe1='TRUE' or Dupe2='TRUE' '')
. Он возвращает ошибку: непредвиденная числовая константа. Не понимаю, что это значит. Я предполагаю, что sql не может читать логические векторы R. Любое решение было бы весьма полезно.sqldf не может прочитать логические векторы в R
-3
A
ответ
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 »)' –
В R и любой SQL-совместимой базе данных значения * True * и * False * никогда не цитируются как строковые литералы. – Parfait