读取器强制列类型

时间:2018-06-18 21:16:32

标签: r readr

我正在尝试读取csv文件 - 并且我试图强制列为某种类型。但是最后一列给出了一个错误:“is.list(col_types)中的错误:未知的快捷方式:g”

有什么建议吗?谢谢!

# Create data frame & write it out:
temp <- data.frame(a = 1:1001,
                   mystring_b = c(rep(NA, 1000), "1"),
                   mystring_c = c(rep(NA, 1000), "2"))
write.csv(temp, "temp.csv", row.names = F)
# Grab its names:
temp_labels <- names(read_csv("temp.csv", n_max = 0))
# Specify data type - for each column:
labels_type <- ifelse(grepl("mystring", temp_labels), "numeric", "guess")
# Reading in while forcing column types:
temp <- read_csv("temp.csv", col_types = labels_type)
# Error in is.list(col_types) : Unknown shortcut: g

1 个答案:

答案 0 :(得分:3)

以下是帮助页面col_types?read_csv的说明摘录:

  

col_types

     

...   或者,您可以使用紧凑的字符串表示形式,其中每个字符代表一列:c =字符,i =整数,n =数字,d = double,{{ 1}} =逻辑,l =日期,D =日期时间,T =时间,t =猜测,或? / {{1}跳过列。

因此,正如错误消息所示,_不是可接受的快捷方式。您应该使用-代替。

此外,尽管"g"似乎幸运地从您的"?"规范中获取了第一个字符,但为了安全起见,您应该使用read_csv来匹配文档。实际上,如果你看一下例子,目的是使用单个字符串,而不是长度为&gt;的字符串向量。 1,作为规范。再说一次,如果您的方法不正常,那么您很幸运,但最好匹配文档,如下所示:

"numeric"