如何使用 data.table/ 替代 tidyverse 公式函数来总结缺失数据?

How to summarise missing data with data.table/ alternative to tidyverse formulas function?

如果我想用dplyr总结多列的缺失,我会做类似

的事情
mtcars %>%
    summarise(across(c(cyl,mpg), ~sum(is.na(.))))

我该如何处理 data.table。我知道 summarise + across 部分应该用 lapply + .SDcols 处理(在 https://atrebas.github.io/post/2019-03-03-datatable-dplyr/#select-columns 之后),但我不知道如何引入像 ~sum(is.na(.))

这样的函数组合

谢谢!

使用 data.table,在 .SDcols 中指定感兴趣的列,使用 lapply 遍历 Data.table (.SD) 的子集,应用获取摘要输出的函数

library(data.table)
nm1 <- c('cyl', 'mpg')
as.data.table(mtcars)[, lapply(.SD, function(x) sum(is.na(x))), .SDcols = nm1]
#    cyl mpg
#1:   0   0

tidyverse 语法中的 ~function(x)

的 shorthand lambda 语法

tidyverse 语法可以在 data.table 中使用,但它不会 return 和 data.table

as.data.table(mtcars)[, .SD %>%
       summarise(across(c(cyl, mpg), ~ sum(is.na(.))))]
#   cyl mpg
#1   0   0