R如何将字符转换为数字?

How does R convert characters to numbers?

不是一个特别有用的问题但是...

我不小心将字符列(包含字母和数字的组合)转换为数字列;这让我想知道 R 究竟是如何进行这种转换的?

这取决于原始字符向量的编码方式。如果它是一个真正的字符向量,任何不是数字的值都会被替换为 NA:

dat <- c("a","b","c","d","a1","2b", "3")
as.numeric(dat)
# [1] NA NA NA NA NA NA  3
# Warning message:
# NAs introduced by coercion 

但是,如果向量是 因子,则 R 使用因子水平来分配数值:

dat <- as.factor(c("a","b","c","d","a1","2b", "3"))
dat
# [1] a  b  c  d  a1 2b 3 
# Levels: 2b 3 a a1 b c d
as.numeric(dat)
# [1] 3 5 6 7 4 1 2