【问题标题】:Count NULL values by column in R在 R 中按列计算 NULL 值
【发布时间】:2021-12-31 17:41:49
【问题描述】:

我正在尝试在 R 中对我的数据框中的 NULL 值的数量求和。我可以使用下面的代码轻松地使用 NA 值来做到这一点:

colSums(is.na(df))

但是当我尝试使用 is.null 执行此操作时,我得到以下错误:

colSums(is.null(df)) 中的错误: 'x' 必须是至少二维的数组

我相信解决方案是将数据框更改为另一种形式来执行此操作 - 但我不知道互联网搜索如何证明是徒劳的(并且经常将 NA 和 NULL 混为一谈)

【问题讨论】:

  • is.na() 返回与数据框具有相同维度的逻辑矩阵,而 is.null() 返回单个 TRUE/FALSE 值。使用 例如 dput(df)dput(head(df)) 查看部分或全部数据 df(包括 NULL 值)会有所帮助。 NULL 可能并不意味着您认为它的含义例如它可能存储为类型字符。

标签: r dataframe null


【解决方案1】:

数据帧中的 NULL 值实际上是空列表。您必须检查它们的长度是否为 0。在 tidyr 中:

library(tidyverse)

d <- tribble(~a, ~b,
             "a", NULL,
             NULL, "y",
             "b", "z")
d
# A tibble: 3 x 2
# a         b        
# <list>    <list>   
# 1 <chr [1]> <NULL>   
# 2 <NULL>    <chr [1]>
sum(map_dbl(d, ~length(~.x) > 0))
# [1] 2

or Base R:

d <- data.frame(a = I(list("a", NULL, "b")),
                b = I(list(NULL, "y", "z")))
d
# a b
# 1 a  
# 2   y
# 3 b z
sum(apply(d, 2, function(a) sum(vapply(a, function(b) length(b) == 0L, numeric(1)))))
#[1] 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2021-06-21
    • 2021-12-09
    相关资源
    最近更新 更多