Сохранение NAs в команде grepl

#r #na #grepl

#r #na #grepl

Вопрос:

Мне нужно сохранить NAs в моих переменных.

У меня есть переменная с именами, некоторые из них имеют верхний и некоторые смешанные регистры. Я хочу сгенерировать переменную, которая определяет следующее имя, по крайней мере, с одним именем в нижнем регистре = 1, только с заглавными буквами = 0 NA = (я хочу сохранить его, потому что мне нужно выполнить регрессии без ответа)

Мой код следующий, но я не знаю, как реализовать NA команду.

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

Комментарии:

1. Пожалуйста, отправьте образец тестовых данных и соответствующий ожидаемый результат.

2. Итак, в основном вы хотите сделать df так NA , как x$variable есть NA . df[is.na(x$variable)] <- NA

Ответ №1:

Вы могли бы использовать ifelse и is.na для первой проверки NA и использовать результат только grepl для значений, отличных от NA:

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

Ответ №2:

Приведенная ниже функция возвращает

  • TRUE если какой-либо символ является строчной буквой;
  • FALSE если ни один символ не является строчной буквой;
  • NA если входные NA данные.

grepl Можно использовать все аргументы с теми же результатами, за исключением поведения при наличии NA ‘s .

 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