使用不同数量的字符串加载csv文件

时间:2014-03-11 21:17:26

标签: r csv import

如果文件在每行中包含不同数量的字符串,我如何将数据从csv文件加载到R中?我需要在一个变量(例如列表列表?)中将它联合起来。文件中的数据如下所示(我不知道一行中的最大元素数):

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

2 个答案:

答案 0 :(得分:4)

使用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

答案 1 :(得分:1)

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"   

从技术上讲,这是一个向量列表而不是列表列表,但它可能就是你想要的......