我将尝试复制您的问题:
set.seed(1)
a <- factor(sample(1:100, 10))
> a
[1] 27 37 57 89 20 86 97 62 58 6
Levels: 6 20 27 37 57 58 62 86 89 97
alexwhan 的评论实际上很好:
> as.numeric(as.character(a))
[1] 27 37 57 89 20 86 97 62 58 6
即使您的数据需要,trim()ed
它仍然可以工作:
> paste( " ", a, " ")
[1] " 27 " " 37 " " 57 " " 89 " " 20 " " 86 " " 97 " " 62 " " 58 " " 6 "
> as.numeric(paste( " ", a, " "))
[1] 27 37 57 89 20 86 97 62 58 6
所以唯一的解释是你所有的数字都有一些(意想不到的)字符
> as.numeric(paste(a, "a"))
[1] NA NA NA NA NA NA NA NA NA NA
Warning message:
NAs introduced by coercion
如果您看不到任何字母,则以下发生在我身上:
> paste( intToUtf8(160), a, intToUtf8(160))
[1] " 27 " " 37 " " 57 " " 89 " " 20 " " 86 " " 97 " " 62 " " 58 " " 6 "
> as.numeric(paste( intToUtf8(160), a, intToUtf8(160)))
[1] NA NA NA NA NA NA NA NA NA NA
intToUtf8(32) 是键盘上常用的空白(如上面的某些行),但数字 160 看起来很相似,但又是另一个不同的东西,它as.numeric
(以及trim
from gdata
)无法识别并返回
NA
。