【问题标题】:Keeping NAs in grepl command在 grepl 命令中保留 NA
【发布时间】:2020-10-02 08:49:38
【问题描述】:

我需要在我的变量中保留 NA。

我有一个带有名称的变量,有些是大写的,有些是混合大小写的。我想生成一个定义以下内容的变量 名称至少有一个小写 = 1 名称只有大写 = 0 不适用 = (我想保留它,因为我需要在无响应的情况下进行回归)

我的代码如下,但是我不知道如何实现NA命令。

df <- grepl("[a-z]", x$variable)

【问题讨论】:

  • 请发布样本测试数据和相应的预期输出。
  • 所以基本上你想让df 成为NA 其中x$variableNAdf[is.na(x$variable)] &lt;- NA

标签: r na grepl


【解决方案1】:

您可以先使用ifelseis.na 来检查NA,然后只使用grepl 的结果来检查NA 以外的值:

df <- ifelse(is.na(x$variable), NA, grepl("[a-z]", x$variable))

【讨论】:

    【解决方案2】:

    下面的函数返回

    • TRUE 如果任何字符是小写字母;
    • FALSE 如果没有字符是小写字母;
    • NA 如果输入是NA

    可以使用grepl 的所有参数,除了NA 存在时的行为之外,结果相同。

    na_grepl <- function(pattern, x, ...){
      y <- grepl(pattern, x, ...)
      is.na(y) <- is.na(x)
      y
    }
    
    x <- c("abc", "ABc", "ABC", NA)
    na_grepl("[a-z]", x)
    #[1]  TRUE  TRUE FALSE    NA
    

    【讨论】:

      猜你喜欢
      • 2017-03-16
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 2022-01-15
      • 2012-03-12
      相关资源
      最近更新 更多