【发布时间】:2018-06-07 09:56:48
【问题描述】:
我发现 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]], ...) 中:强制引入的 NAs
而result 则仅包含 NA。
如果变量species 不存在,则一切正常。但是sqldf 甚至不应该碰变量species,对吧??
编辑:我怀疑这是一个错误。我举报了:https://github.com/ggrothendieck/sqldf/issues/23
【问题讨论】:
-
运行该确切代码不会给我警告消息。您是否尝试过重新启动 R 会话?
-
@时缺哇!我试图打开一个新会话,但没有发出警告!我不明白。这怎么可能??
-
一个可能的原因是某些
options()设置为非默认值。但据我所知,它可能是别的东西。 -
我没有设置任何选项。它也不能在数据中,因为正如您所见,我非常简单地初始化了它们。 R 或 sqldf 中一定有一些烂掉的东西!
-
这是交叉发布到github.com/ggrothendieck/sqldf/issues/23 并在那里回答。