Load csv file with different number of strings

2019-07-11 07:35发布

问题:

How would I load data from a csv file into R if the file contains different numbers of strings in every line? I need to unite it in one variable (E.g. a list of lists?). The data in the file looks like this (I don't know the maximum number of elements in one row):

Peter; Paul; Mary
Jeff;
Peter; Jeff
Julia; Vanessa; Paul

回答1:

Use fill=TRUE:

read.table(text='
Peter; Paul; Mary
Jeff;
Peter; Jeff
Julia; Vanessa; Paul',sep=';',fill=TRUE)
     V1       V2    V3
1 Peter     Paul  Mary
2  Jeff               
3 Peter     Jeff      
4 Julia  Vanessa  Paul


回答2:

r <- readLines("tmp3.csv")
getLine <- function(x) {
    r <- scan(text=x,sep=";",what="character",quiet=TRUE)
    r <- r[nchar(r)>0]  ## drop empties
    r <- gsub("(^ +| +$)","",r)  ## strip whitespace
    r
} 
lapply(r,getLine)
## [[1]]
## [1] "Peter" "Paul"  "Mary" 
## 
## [[2]]
## [1] "Jeff"
## 
## [[3]]
## [1] "Peter" "Jeff" 
## 
## [[4]]
## [1] "Julia"   "Vanessa" "Paul"   

This is technically a list of vectors rather than a list of lists but it might be what you want ...



标签: r csv import