Функция grepl
уже возвращает логический вектор, поэтому просто используйте следующее:
sub_data <- subset(account,
grepl("NY", city) & grepl("NY", register)
)
Используя что-то вроде grepl("NY", city) == "NY"
, вы спрашиваете R, равны ли какие-либо значения в FALSE TRUE FALSE FALSE TRUE FALSE
"NY"
, что, конечно, ложно.