R-将NA替换为NULL以输入PostgreSQL

R-将NA替换为NULL以输入PostgreSQL,r,postgresql,R,Postgresql,我正在尝试将NA值替换为NULL。原因是,我需要将numeric值输入到PostgreSQL数据库中,并不断得到错误:error:numeric类型的输入语法无效“ 我尝试将值设置为NA、空字符串'、空字符串“NULL”(作为字符串)。这些都不起作用 df = data.frame(x=c('a', 'b', 'c', 'd', 'e'), y=c(1, 2, 3, NA, 5)) df[is.na(df)] = "NULL" df[is.na(df)] = "" 如果您的表使用的是numer

我正在尝试将
NA
值替换为
NULL
。原因是,我需要将
numeric
值输入到PostgreSQL数据库中,并不断得到错误:
error:numeric类型的输入语法无效“

我尝试将值设置为
NA
、空字符串
'
、空字符串
“NULL”
(作为字符串)。这些都不起作用

df = data.frame(x=c('a', 'b', 'c', 'd', 'e'), y=c(1, 2, 3, NA, 5))
df[is.na(df)] = "NULL"
df[is.na(df)] = ""

如果您的表使用的是
numeric
,则将
NA
转换为
NaN
应该可以<代码>数字,以及
十进制
浮点
支持
NaN
(请参阅)

如果您的数据类型不同,例如
integer
,您可以使用
nullif
强制
NaN
NULL

nullif(y, 'NaN')

在存在其他非空元素的原子向量中,不能将
NULL
作为元素
NULL
长度为零,因此从向量中删除,或者通过赋值触发错误。为什么NA不起作用?该列类仍然是数字类。您如何将dataframe导入数据库?使用RODBC?如果是这样的话,从数据帧创建表的操作会将NA处理为空。我只是在导出为
csv
后手动导入。不过,我将尝试
sqlSave()
方法。同样适用于布尔/逻辑,方法是先将逻辑转换为字符,
y=as.character(mybool)
,然后在SQL:
nullif(y,'NA')::boolean
用于NA或
nullify(y')::boolean
用于空白/空(例如,未设置的输入)。