Maybe there's a reason some other pieces of your data are more complicated that would break this, but my first thought is:
> !is.na(as.numeric(x))
[1] TRUE TRUE TRUE TRUE FALSE FALSE
As noted below by Josh O'Brien this won't pick up things like 7L
, which the R interpreter would parse as the integer 7. If you needed to include those as "plausibly numeric" one route would be to pick them out with a regex first,
x <- c("1.2","1e4","1.2.3","5L")
> x
[1] "1.2" "1e4" "1.2.3" "5L"
> grepl("^[[:digit:]]+L",x)
[1] FALSE FALSE FALSE TRUE
...and then strip the "L" from just those elements using gsub
and indexing.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…