我尝试读取具有以下结构的csv文件:
是否可以将其读取并保存为单个列表,其中每个条目都称为表A-每月,表B-每月,表C-每月等等?同样,每个列表条目都必须是带有标题“ col1,col2,col3”的数据帧。
我知道如何从头开始跳过文本,但是如何在结尾处摆脱“版权”呢?
我非常感谢您提出解决问题的建议。预先感谢!
答案 0 :(得分:1)
假设:
将行读入L
(实际上用文件名替换参数)并提取表名,标题和内容行,并删除任何以goodLines
开头的逗号。确定表名iNames
的位置,然后获取Names
本身。然后将除表名以外的goodLines拆分为字符向量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"