If a generated value has NAs shouldn't be controlled by a logical. There should be more control about the proportion of NAs. A number doesn't work well since the NAs will be randomly distributed. Propose something like:
has_na = none()
has_na = some()
has_na = all()