如何用纯数字替换字符串作为 NA?

How to replace strings with purely numbers as NA?

我想用缺失值 NA 替换纯数字字符串。我尝试了匹配字符串开头的正则表达式 ^,包含数字 0-9 的 [:digit:] 和匹配至少 1 次的 +,但它们不起作用.

> a<-c("1111","A111","DD41412")
> a[a=="^[:digit:]+"]<-NA
> [1] "1111"    "A111"    "DD41412"

我们可以在 grepreplace 中使用正则表达式模式,基于数值索引(如果我们使用 grepl 则为逻辑索引)和 NA。

a1 <- replace(a, grep("^[0-9]+", a), NA)
a1
#[1] NA        "A111"    "DD41412"

我们也可以使用这个:

a[!is.na(as.integer(a))] <- NA

# [1] NA        "A111"    "DD41412"