r - fread 的填充选项

标签 r data.table

假设我有这个 txt 文件:

"AA",3,3,3,3
"CC","ad",2,2,2,2,2
"ZZ",2
"AA",3,3,3,3
"CC","ad",2,2,2,2,2

read.csv我可以:
> read.csv("linktofile.txt", fill=T, header=F)
  V1 V2 V3 V4 V5 V6 V7
1 AA  3  3  3  3 NA NA
2 CC ad  2  2  2  2  2
3 ZZ  2 NA NA NA NA NA
4 AA  3  3  3  3 NA NA
5 CC ad  2  2  2  2  2

然而fread
> library(data.table)

> fread("linktofile.txt")
   V1 V2 V3 V4 V5 V6 V7
1: CC ad  2  2  2  2  2

我可以用 fread 得到同样的结果吗? ?

最佳答案

重大更新

看起来是fread的开发计划更改和 fread现在获得了 fill争论。

使用本答案末尾的相同示例数据,我得到的是:

library(data.table)
packageVersion("data.table")
# [1] ‘1.9.7’
fread(x, fill = TRUE)
#    V1 V2 V3 V4 V5 V6 V7
# 1: AA  3  3  3  3 NA NA
# 2: CC ad  2  2  2  2  2
# 3: ZZ  2 NA NA NA NA NA
# 4: AA  3  3  3  3 NA NA
# 5: CC ad  2  2  2  2  2

安装“data.table”的开发版本:
install.packages("data.table", 
                 repos = "https://Rdatatable.github.io/data.table", 
                 type = "source")

原答案

这不能回答您关于 fread 的问题:@Matt 已经解决了这个问题。

但是,它确实为您提供了一种替代方案,应该可以为您提供比基础 R 更好的速度改进 read.csv .

不像 fread ,您将不得不通过向它们提供有关您尝试读取的数据的一些信息来帮助它们。

您可以使用 input.file来自“iotools”的功能。通过指定列类型,您可以告诉格式化程序函数需要多少列。
library(iotools)
input.file(x, formatter = dstrsplit, sep = ",",
           col_types = rep("character", max(count.fields(x, ","))))

样本数据
x <- tempfile()
myvec <- c('"AA",3,3,3,3', '"CC","ad",2,2,2,2,2', '"ZZ",2', '"AA",3,3,3,3', '"CC","ad",2,2,2,2,2')
cat(myvec, file = x, sep = "\n")

## Uncomment for bigger sample data
## cat(rep(myvec, 200000), file = x, sep = "\n")

关于r - fread 的填充选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597488/

相关文章:

r - 为什么 data.table CJ 不尊重列主要顺序

r - 使用 data.table 索引序列 block

r - ggplot2:Logistic回归-绘制概率和回归线

r - 从 Perl 中的数组中概率抽样

r - lapply/R中的 promise

r - pickerInput 默认选择所有选项

r - 使用 mean() 和 sum()/.N 时,按组的 data.table 平均值提供不同的结果

数据表中的最大行数

r - data.table:列名与变量名相同

r - 如何在 geom_text 中使用 position_dodge with preserve = 'single'?