#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