R library(sqldf) 无法更改具有 na(null) 的列的包含

R library(sqldf) cannot change the contain of a column with na( null)

我有一个列,当我使用

时,我想用一个值替换空值(该列仅包含 na)
library(sqldf)
options(sqldf.driver = "SQLite")
var1<-sqldf("select col1, case when col2 is \"NA\" then 'sth' else 'sth' end as col2 from table1")

改不了,我也试过了

 var1<-sqldf("select col1, case when col2 is null then 'sth' else 'sth' end as col2 from table1")

并尝试全部替换(整列为空):

var1<-sqldf("select col1, 'sth'as col2 from table1")

不是这些工作,为了让它工作,我必须创建一个新列,如

var1<-sqldf("select col1, 'sth'as col2_sth from table1") 

但我需要保留具有新值的列,在这种情况下我该怎么办?它是 sqldf 中的错误吗?

如果您的所有列都是 NA,您的问题可能是该列是数字,您不能在不更改 class 的情况下输入字符,请参见示例:

library(sqldf)
options(sqldf.driver = "SQLite")
table1 <- data.frame(col1 = 1:6, col2 = rep(NA, 6))

sqldf("select col1, case when col2 is NULL then 'sth' else 'sth' end as col2 from table1")
  col1 col2
1    1   NA
2    2   NA
3    3   NA
4    4   NA
5    5   NA
6    6   NA
Warning message:
In asfn(rs[[i]]) : NAs introduced by coercion

更改 col2 的 class 这没有问题。

table1$col2 <- as.character(table1$col2)
sqldf("select col1, case when col2 is NULL then 'sth' else 'sth' end as col2 from table1")
  col1 col2
1    1  sth
2    2  sth
3    3  sth
4    4  sth
5    5  sth
6    6  sth