创建了一个数据框:
simpleDF<- structure(list(vals = c(NA, NaN, 2)), .Names = "vals", row.names = c(NA,
-3L), class = "data.frame")
> is.na(simpleDF$vals)
[1] TRUE TRUE FALSE
> is.nan(simpleDF$vals)
[1] FALSE TRUE FALSE
Run Code Online (Sandbox Code Playgroud)
现在,当我更改数据框以包含字符串值时:
simpleDF <- structure(list(vals = structure(c(NA, 2L, 1L, 3L), .Label = c("2",
"NaN", "test"), class = "factor")), .Names = "vals", row.names = c(NA,
-4L), class = "data.frame")
> is.na(simpleDF$vals)
[1] TRUE FALSE FALSE FALSE
> is.nan(simpleDF$vals)
[1] FALSE FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
我不明白为什么NaN不再被认可is.nan()?当然会有一个解释..
NaN是一个仅在数字向量中有意义的值,因此"NaN"当它所在的向量类(显式或隐式)从数字转换为字符或因子时,它将转换为字符串.
vals
# [1] NA NaN 2
as.character(vals)
# [1] NA "NaN" "2"
c(vals, "A")
# [1] NA "NaN" "2" "A"
Run Code Online (Sandbox Code Playgroud)