read.csv将空字符列转换为NA

时间:2019-01-28 23:50:01

标签: r csv data.table readr

示例:

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.tablereadr也会出现此问题。

为什么会这样?

编辑:我主要是在寻求解释为什么会发生这种情况,而不是解决方案。

1 个答案:

答案 0 :(得分:2)

您可以将colClasses参数更改为read.csv

x <- read.csv("/tmp/temp.txt", colClasses = c(X = "character"))
str(x)
#'data.frame':  2 obs. of  2 variables:
# $ X: chr  "" ""
# $ Y: int  1 2