【发布时间】:2021-10-22 10:10:35
【问题描述】:
我有一个从 MongoDb 数据库作为 data.table 导入的数据集,其中一些列被格式化为列表并包含一些 NULL 值。 NULL 值导致我在尝试通过引用第一个表来填充另一个 data.table 中的列时出现一些问题,因为目标列不是列表格式(因此不能有 NULL 值)。
我在下面找到了一个解决方案,目前效果很好,但是我的测试数据集只有 6 条记录,我想知道在处理更大的数据集时这是否会遇到困难,或者是否有更有效的方法来做到这一点(在数据表)?
以下是一些示例数据:
library(data.table)
dt <- data.table(id = c(1,2,3), age = list(12, NULL, 15), sex = list("F", "M", NULL))
这是我应用的解决方案:
# Function to change NULL to NA in a data.table with lists:
null2na <- function(dtcol){
nowna = lapply(dtcol, function(x) ifelse(is.null(x), NA_real_, x))
return(nowna)
}
# Apply the function to the data.table to replace NULLs with NAs:
dt[, c(names(dt)) := lapply(.SD, null2na), .SDcols = names(dt)]
【问题讨论】:
标签: r null data.table na