【问题标题】:Strange warning message: In FUN(X[[i]], ...) : NAs introduced by coercion奇怪的警告信息:在 FUN(X[[i]], ...) 中:强制引入的 NA
【发布时间】: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 并在那里回答。

标签: r sqldf


【解决方案1】:

很好奇。但是可以通过查询中的表来解决。

> 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

【讨论】:

  • 很有趣,谢谢!反正我怀疑sqldf的行为是个bug,我报了。
  • 是的,是一个错误。我已经追踪到问题,method 中有错误。固定方法也固定了。
  • 感谢@Juan。为什么每次我有这么多工作并且时间紧迫,我必须处理最不期望的错误? ;/
  • 欢迎在 GitHub 上对问题发表评论:github.com/ggrothendieck/sqldf/issues/23
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2019-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多