【发布时间】:2019-06-22 01:03:29
【问题描述】:
例子:
x <- data.frame(X = c("",""), Y=1:2, stringsAsFactors = F)
write.csv("/tmp/temp.txt", row.names=F, quote=T)
read.csv("/tmp/temp.txt")
X Y
1 NA 1
2 NA 2
readr::read_csv("/tmp/temp.txt", col_types = list(col_character(), col_double()))
X Y
<chr> <dbl>
1 NA 1
2 NA 2
我希望 X 列是空字符串,但它被转换为 NA_logical_,尽管它是一个带引号的字段 (quote=T)。我找不到可以让我将 X 列读取为空字符串的参数。 data.table 和 readr 也会出现问题。
为什么会这样?
编辑:我主要是在寻找为什么会发生这种情况的解释,而不是解决方案。
【问题讨论】:
-
我认为简短的回答是,当没有指定变量类型时,R 必须猜测。空字符串是不明确的(可能意味着空字符串或缺失值),因此 R 默认为“最低”类型,即
logical。也许对 R 内部有深入了解的人可以详细说明。
标签: r csv data.table readr