web-dev-qa-db-fra.com

Comment importer un fichier .tsv dans R?

J'ai besoin de lire un tableau

 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'

Comment devrais-je le lire?

13
Andrew Voronkov

Cela devrait le faire:

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

L'utilisation de fread à partir du paquet data.table lira les données et évitera l'erreur que vous obtenez avec read.table.

require(data.table)

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

En supposant que seule la première ligne n'ait pas le bon nombre d'éléments et qu'il s'agit de la ligne des noms de colonnes. Passer la première ligne:

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

Maintenant le lire

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

Inspectez-le, corrigez-le de sorte que son nombre d'éléments corresponde à d, puis

 colnames(d) <- first

Si cela ne fonctionne pas, vous pouvez faire

 x <- readLines('drug_info.tsv')  

et des diagnostics comme celui-ci:

 sapply(x, length)
5
Robert Hijmans

Vous pouvez traiter les données comme un fichier csv et spécifier une suppression par des tabulations.

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

utils::read.delim() est le plus souvent utilisé dans ce cas si vous ne souhaitez pas installer une autre bibliothèque. Le code exemple pourrait être quelque chose comme:

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

ou des fonctions io beaucoup plus conviviales pourraient être disponibles à partir de readr library , où un read_tsv fonction nommée est disponible directement:

test <- readr::read_tsv('drug_info.tsv')
0
千木郷