Странное предупреждающее сообщение: В FUN (X [[i]], ...): NA введены по принуждению - PullRequest
0 голосов
/ 07 июня 2018

Я обнаружил странное поведение sqldf - он выдает предупреждение «NA, введенные путем принуждения», когда существует переменная с тем же именем, что и столбец, и с другим типом данных.Следующий код:

x <- structure(list(euring = c(12380, 12430), species = c("Locustella luscinioides", 
"Acrocephalus schoenobaenus")), .Names = c("euring", "species"
), row.names = 1:2, class = "data.frame")

species <- structure(list(EURING = c(0, 980), Species = c(NA_integer_, NA_integer_
)), .Names = c("EURING", "Species"), row.names = 1:2, class = "data.frame")

require(sqldf)

result <- sqldf("
select species as Species
from x
")

производит:

Предупреждающее сообщение: В FUN (X [[i]], ...): NA введены с помощью принудительного действия

*Тогда 1008 *

и result содержат только NA.

Если переменная species не существует, все в порядке.Но sqldf не следует даже касаться переменной species, верно ??

РЕДАКТИРОВАТЬ: Я подозреваю, что это ошибка.Я сообщил об этом: https://github.com/ggrothendieck/sqldf/issues/23

1 Ответ

0 голосов
/ 07 июня 2018

Это любопытно.Но вы можете решить эту проблему, обратившись к таблице в запросе.

> sqldf("select species as Species from x")
  Species
1      NA
2      NA
Warning message:
In asfn(rs[[i]]) : NAs introduced by coercion
> sqldf("select a.species as Species from x a")
                     Species
1    Locustella luscinioides
2 Acrocephalus schoenobaenus

Существует ошибка, когда method равно нулю.method = data.frame - это еще один вариант.

> sqldf("select species as Species from x", method = data.frame)
                     Species
1    Locustella luscinioides
2 Acrocephalus schoenobaenus
...