我需要读一个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'
我该如何阅读?
答案 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')