Read.Table 与 Readr 包中的 Read_Table - Readr 添加的额外列

Posted

技术标签:

【中文标题】Read.Table 与 Readr 包中的 Read_Table - Readr 添加的额外列【英文标题】:Read.Table vs. Read_Table in Readr Package - Extra Columns Added with Readr 【发布时间】:2017-12-20 06:24:41 【问题描述】:

我正在尝试使用 readr 包读取 zip 文件。我的原始 csv 文件有 170 列。

当使用常规 read.table 函数将 zip 文件读入 R 时,不会添加额外的列:

data1 <- read.table(unz(zip_file,csv_file), skip = 10, header=T, quote="\"", sep=",")

当我尝试使用read_table 重现此内容时,如下所示:

data2 <- read_table(unz(zip_file,csv_file), skip = 10)

还有更多额外的列。

当我使用 read.table 和 1461 和 read_table 时,有 170 列。

下面是 excel 中的一些列的列表(以便您了解原始的样子),我想知道如何使用 read_table 函数读取所有内容而无需添加额外的列:

Column Names: 
A
B
C
D (A)
D (B)
E F
G
A B C : 2017 D E - F G: H I
J.org - B : L -- K.org: F C
2016 TEST TESTING : Baltimore TEST TESt: H B

我认为有一堆空格、破折号、冒号等导致 read_table 添加了额外的列。

如何避免有多余的列,但同时保持原始格式的列?

谢谢!

【问题讨论】:

你试过readr::read_table2吗?因为?readr::read_tableread_table 更严格,而read_table2 就像read.table 如果它是一个csv文件,为什么不使用readr::read_csv呢? 我正在读取一个 zip 文件,所以为了解压缩 zip 文件和 csv,我读到 read.table 是一个更好的选择 read_table2 不幸的是还有很多额外的列 @dshkol 我完全收回了这一点。即使解压缩文件,read_csv 也能完美运行。谢谢!介意把它记下来作为答案吗? 【参考方案1】:

如果您使用readr::read_csv,它应该可以在不添加其他列的情况下工作,因为它可以正确地从您的 CSV 文件中选择适当的分隔符。

data2 &lt;- read_csv(unz(zip_file,csv_file), skip = 10)

【讨论】:

以上是关于Read.Table 与 Readr 包中的 Read_Table - Readr 添加的额外列的主要内容,如果未能解决你的问题,请参考以下文章

readr::read_lines:空 *txt 文件的行长度结果问题

readr - 不读取缺少标题的列

用R包中heatmap画热图

R 函数笔记 read.table()函数

有很多列时使用 readr::read_csv() 导入数据时覆盖列类型

R比较两个文件中的名字是否重名