fread - 读取所有列为字符类型

15

我想使用 data.table / fread 将文件读入 R。其中一些字段具有前导零,我只想将数据读取为字符并手动修复它们。但是我不知道如何告诉 fread。我尝试了这个方法,但它会像通常一样分配 char、num 等类型:

我希望使用 data.table / fread 将文件读入 R。某些字段具有前导零,我只想将数据读取为字符,并手动修复它们。然而,我无法弄清楚如何告诉 fread 这一点。我正在尝试以下方法,但它会像通常一样分配 char、num 等类型:

prop1 <- data.frame(fread("C:\\myFile.csv"), stringsAsFactors = F, colClasses = c(rep('character',58)))

我错过了什么?

2个回答

27

你的colClasses参数放错了位置。它需要在fread()内部而不是data.frame()内部。尝试这样:

fread(..., colClasses = your_colClasses)
prop1 <- data.frame(fread("C:\\myFile.csv", 
                          colClasses = c(rep("character", 58))),
                    stringsAsFactors = FALSE)

更加规范的使用 data.table 实现这个目标的方法是:

prop1 <- fread("C:\\myfile.csv", colClasses = 'character', data.table = FALSE)

@MichaelChirico 我该如何为一列指定类,然后让fread自动猜测其余列的类? - user2205916
@user2205916 使用 colClasses = list(character = 'known_char_col'),即在 list 格式中传递已知列的类型,请参见 ?fread - MichaelChirico
@MichaelChirico 我不明白。我更清楚地提出了我的问题:https://dev59.com/_Knka4cB1Zd3GeqPJCHR - user2205916

9
简单来说:
colClasses=c("character")

2
我知道你想要简单明了,但是一些额外的文字会帮助人们将其视为完整的答案 :) prop1 <- fread("C:\myfile.csv", colClasses = 'character', data.table = FALSE) - Puneet Sinha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接