我遇到一个问题,从类型为numeric的PostgreSQL列获取带有dplyr
(0.5.0)的NaN数值数据(因此支持NaN)。基础故障位于RPostgreSQL
,其中NaN
值为零。 E.g:
# create table
create table tmp_dplyr_NaN_test_20170802 (
val numeric
);
insert into tmp_dplyr_NaN_test_20170802 (val) values (100);
insert into tmp_dplyr_NaN_test_20170802 (val) values ('NaN');
然后,正在运行select * from tmp_dplyr_NaN_test_20170802;
会按预期返回值100, NaN
。
在R
:
RPostgreSQL::dbGetQuery(con, "select val from tmp_dplyr_NaN_test_20170802")
# val
# 1 100
# 2 0
可以通过以下方式“修复”:
RPostgreSQL::dbGetQuery(con, "select nullif(val, 'NaN') from tmp_dplyr_NaN_test_20170802")
# nullif
# 1 100
# 2 NA
我想知道这里发生了什么。如何在不使用数据库内的NaN
的情况下将NaN
值实际收集为NA
或nullif
?