And*_*kov 18 import r read.table
我需要读一张桌子
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'
Run Code Online (Sandbox Code Playgroud)
我该怎么读?
Rob*_*ert 24
这应该这样做:
read.table(file = 'drug_info.tsv', sep = '\t', header = TRUE)
Run Code Online (Sandbox Code Playgroud)
小智 9
您可以将数据视为 csv,并指定制表符分隔。
read.csv("drug_info.tsv", sep = "\t")
Run Code Online (Sandbox Code Playgroud)
小智 7
使用包中的fread.table将读取数据,并将跳过使用read.table获得的错误.
require(data.table)
data<-as.data.frame(fread("drug_info.tsv"))
Run Code Online (Sandbox Code Playgroud)
utils::read.delim()如果您不想安装其他库,则在这种情况下最常用。示例代码可能类似于:
test <- read.delim(file='drug_info.tsv')
Run Code Online (Sandbox Code Playgroud)
或者可以从 中获得更友好的 io 函数readr library,其中可以直接使用read_tsv命名函数:
test <- read.delim(file='drug_info.tsv')
Run Code Online (Sandbox Code Playgroud)
假设只有第一行没有正确数量的元素,并且这是列名称行.跳过第一行:
d <- read.table('drug_info.tsv', skip=1)
Run Code Online (Sandbox Code Playgroud)
现在看了
first <- readLines('drug_info.tsv', n=1)
Run Code Online (Sandbox Code Playgroud)
检查它,修复它以使其元素数匹配d然后
colnames(d) <- first
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,你可以这样做
x <- readLines('drug_info.tsv')
Run Code Online (Sandbox Code Playgroud)
和这样的诊断:
sapply(x, length)
Run Code Online (Sandbox Code Playgroud)
小智 5
您需要包括 fill = TRUE。
test <- read.table(file='drug_info.tsv', sep = '\t', header = TRUE, fill = TRUE)
Run Code Online (Sandbox Code Playgroud)