从R中的CSV文件中读取数据帧列表

时间:2015-04-07 10:02:07

标签: r csv split

我有一个CSV文件,其中包含许多具有相同列的数据框,例如:

x y z
1 2 3
3 2 1
x y z
1 3 2
2 3 1
2 1 3

我想要做的是将这些数据加载到数据帧列表中。例如,像这样:

$`1`
x y z
1 2 3
3 2 1

$`2`
x y z
1 3 2
2 3 1
2 1 3

在R中有没有快速的方法呢?

2 个答案:

答案 0 :(得分:3)

我们可以使用readLines阅读文件,创建'索引',split带有'索引'的行,然后使用read.tableread.csv <阅读/ p>

lines <- readLines(yourfile)
index <- cumsum(lines==lines[1])
lapply(split(lines,index), function(x) read.table(text=x, header=TRUE))
#$`1`
#  x y z
#1 1 2 3
#2 3 2 1

#$`2`
#  x y z
#1 1 3 2
#2 2 3 1
#3 2 1 3

答案 1 :(得分:3)

一种解决方案是按原样读取文件:

df = read.table(file='clipboard', sep=' ')
#  V1 V2 V3
#1  x  y  z
#2  1  2  3
#3  3  2  1
#4  x  y  z
#5  1  3  2
#6  2  3  1
#7  2  1  3

在该列上添加一列并拆分:

df$V4 = cumsum(df$V1=='x')
lapply(split(df, df$V4), function(u) setNames(u[2:nrow(u), 1:3], c('x','y','z')))
#$`1`
#  x y z
#2 1 2 3
#3 3 2 1

#$`2`
#  x y z
#5 1 3 2
#6 2 3 1
#7 2 1 3