如何导入.tsv文件

时间:2015-10-24 19:12:41

标签: r import read.table

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

enter image description here

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'

我该如何阅读?

6 个答案:

答案 0 :(得分:22)

这应该这样做:

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

答案 1 :(得分:6)

使用包中的fread.table将读取数据,并将跳过使用read.table获得的错误。

require(data.table)

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

答案 2 :(得分:5)

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

 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)

答案 3 :(得分:1)

您可以将数据像csv一样对待,并指定制表符分隔。

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

答案 4 :(得分:1)

您需要包含fill = TRUE。

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

答案 5 :(得分:0)

如果您不想安装其他库,则在这种情况下最常使用

utils::read.delim()。示例代码可能类似于:

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

或者readr library可以提供更友好的io功能,其中read_tsv named function可以直接使用:

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