fread无法正确读取列名称

问题描述

我正在尝试使用从here中找到的Apple移动报告生成的csv。

现在一切正常,我可以按预期获得.csv了,如下所示:

csvtxt <- "geo_type,region,2020-01-14,2020-01-15,2020-01-16
country/region,Albania,50.1,100.2,75.3"

但是当我fread时,即使我在这里找到但无法再次找到的选项check.names = FALSE也不会这样识别出第一行,这毫无疑问是列名行。

library(data.table)
fread(csvtxt,check.names = FALSE)
#               V1      V2         V3         V4         V5
#1:       geo_type  region 2020-01-14 2020-01-15 2020-01-16
#2: country/region Albania       50.1      100.2       75.3

是否有一种方法可以导入此数据,以便正确识别列名行?

解决方法

我们需要通过将标头设置为TRUE来强制标头。

import threading
print(threading.activeCount())  # Should print "1"

# The statetement below should be printing the same values
# Such as "1 1 1 1" or smthng like that
print(id([])); print(id([])); print(id([])); print(id([]));

从手册中:

标题
第一数据行是否包含列名?根据第一条数据行上的每个非空字段是否为默认值 输入字符。如果是这样,或者提供了TRUE,则任何空列名都是 指定默认名称。

混淆可能来自 read.csv ,其中标头默认为TRUE:

library(data.table) # R version 4.0.2,data.table_1.13.2

fread(csvtxt,header = TRUE)
#          geo_type  region 2020-01-14 2020-01-15 2020-01-16
# 1: country/region Albania       50.1      100.2       75.3