如何导入 .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 文件的主要内容,如果未能解决你的问题,请参考以下文章
利用Python将EXCEL,CSV,TSV导入Oracle或者MySQL
如何将压缩的 TSV 文件读取到 Databricks 上的数据框?