如何读取由多个不同长度的注释数据帧组成的单个 .csv 文件作为列表?

How to read a single .csv file that consists of multiple commented data frames of different lengths as a list?

我尝试读取具有以下结构的 csv 文件:

是否可以将其读取并保存为单个列表,其中每个条目都称为 Table A -- 每月,Table B -- 每月,Table C --每月等等?此外,每个列表条目都需要是一个带有 header "col1,col2,col3" 的数据框。

我知道如何跳过开头的文字,但我如何去掉最后的"Copyright"?

如果有任何建议可以解决我的问题,我将不胜感激。提前致谢!

假设:

  • 末尾注释中可重复显示的输入
  • table 名称行是唯一带有 --
  • 的行
  • table 内容和 header 行是唯一带有逗号的行
  • 我们可以删除任何以 ,
  • 开头的行中的前导 ,

将行读入 L(实际上用文件名替换参数)并提取 table 名称、标题和内容行,并删除任何前导逗号 goodLines。确定 table 名称 iNames 在其中的位置,然后获取 Names 本身。然后将 goodLines(table 名称除外)拆分为字符向量列表 s 并在适当设置组件名称时读取每个。

# L <- readLines("myfile.dat")
L <- readLines(textConnection(Lines))
goodLines <- sub("^,", "", grep("--|,", L, value = TRUE)) 
iNames <- grepl("--", goodLines)
Names <- sub(" --.*", "", goodLines[iNames])
s <- split(goodLines[!iNames], cumsum(iNames)[!iNames])
setNames(lapply(s, function(x) read.csv(text = x)), Names)

给出以下数据框列表:

$`Table A`
  a b c
1 1 2 3
2 4 5 6

$`Table B`
  a b c
1 1 2 3
2 4 5 6

备注

Lines <- "
junk
junk

Table A -- Monthly
,a,b,c
1,2,3
4,5,6

Table B -- Monthly
,a,b,c
1,2,3
4,5,6

junk
junk"