Чтобы включить строки NA
, создайте второе условие с помощью is.na
и объедините их с помощью |
(ИЛИ) на grepl
df[grepl("(\\b\\d{1}\\b)|([0-9]{1}[0]{3}[0-9]{1})", df$value)|is.na(df$value),]
# value expected_result actual_result
#1 10001 Pass Pass
#2 0 Pass Pass
#3 6 Pass Pass
#4 20004 Pass Pass
#5 NA Pass Fail
Или сделать его немного более компактным
grepl("^\\d$|^([1-9]0{3}[1-9]$)", df$value)|is.na(df$value)
данные
df <- structure(list(value = c(10001L, 0L, 6L, 20004L, NA, 4829L, 521L,
89L, 40012L, 47321L), expected_result = c("Pass", "Pass", "Pass",
"Pass", "Pass", "Fail", "Fail", "Fail", "Fail", "Fail"), actual_result = c("Pass",
"Pass", "Pass", "Pass", "Fail", "Fail", "Fail", "Fail", "Fail",
"Fail")), class = "data.frame", row.names = c("1", "2", "3",
"4", "5", "6", "7", "8", "9", "10"))