如何导入 .tsv 文件

Posted

技术标签:

【中文标题】如何导入 .tsv 文件【英文标题】:How to import a .tsv file 【发布时间】:2016-01-24 03:57:53 【问题描述】:

我需要读取 R 中 .tsv 文件的表。

test <- read.table(file='drug_info.tsv')
# Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
#   line 1 did not have 10 elements
test <- read.table(file='drug_info.tsv', )
# Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
#   line 1 did not have 10 elements
scan("drug_info.tsv")
# Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
#   scan() expected 'a real', got 'ChallengeName'
scan(file = "drug_info.tsv")
# Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
#   scan() expected 'a real', got 'ChallengeName'

我应该如何阅读它?

【问题讨论】:

请将文件的前 5 行复制/粘贴到您的问题中并删除图片。 使用默认设置的read.delim read.table 默认使用空格分隔(通常表示空格或制表符)。如果您有空格,您可以使用sep="\t" 将分隔符显式设置为制表符。 read.table 适用于有效的输入文件,因此如果导入数据时出现问题,则与文件有关,而不是函数。因此,为了帮助您,我们需要您分享您实际尝试导入的文件样本,而不是其他程序中的数据图片。 【参考方案1】:

应该这样做:

read.table(file = 'drug_info.tsv', sep = '\t', header = TRUE)

【讨论】:

应该给出与报告相同的错误,第 1 行没有足够的元素 我认为这里的反对票来得太早了,因为我们还没有任何实际数据可以用任何方法进行测试。【参考方案2】:

使用包 data.table 中的 fread 将读取数据并跳过使用 read.table 时遇到的错误。

require(data.table)

data<-as.data.frame(fread("drug_info.tsv"))

【讨论】:

为这个解决方案点赞,因为它可以处理大型数据表,避免 ShinyUI 网页上的会话超时【参考方案3】:

您可以将数据视为 csv,并指定制表符分隔。

read.csv("drug_info.tsv", sep = "\t")

【讨论】:

【参考方案4】:

假设只有第一行没有正确数量的元素,并且这是列名行。跳过第一行:

 d <- read.table('drug_info.tsv', skip=1)

现在阅读

 first <- readLines('drug_info.tsv', n=1)

检查并修复它,使其元素数与d 匹配,然后

 colnames(d) <- first

如果这不起作用,你可以这样做

 x <- readLines('drug_info.tsv')  

和这样的诊断:

 sapply(x, length)

【讨论】:

【参考方案5】:

您需要包括 fill = TRUE。

test <- read.table(file='drug_info.tsv', sep = '\t', header = TRUE, fill = TRUE)

【讨论】:

【参考方案6】:

utils::read.delim() 最常用于这种情况,如果您不想安装其他库。示例代码可能类似于:

test <- read.delim(file='drug_info.tsv')

或者更友好的 io 函数可以从 readr library 获得,read_tsv named function 可以直接获得:

test <- readr::read_tsv('drug_info.tsv')

【讨论】:

以上是关于如何导入 .tsv 文件的主要内容,如果未能解决你的问题,请参考以下文章

xshell如何导入.xsh 文件

利用Python将EXCEL,CSV,TSV导入Oracle或者MySQL

如何从 tsv 文件中提取第一列?

如何将压缩的 TSV 文件读取到 Databricks 上的数据框?

如何在 BASH 中将制表符分隔值 (TSV) 文件转换为逗号分隔值 (CSV) 文件?

如何在python中读取一个大的tsv文件并将其转换为csv