【发布时间】:2014-02-11 08:19:59
【问题描述】:
我正在尝试将一系列自定义数据文件导入 R。
文件被组织成块,由类似 XML 的标记标签标记。我知道这些文件不是真正的 XML 文件,它们不包含标记语言的定义。
每个块可以是单行或制表符分隔的矩阵。评论往往用 % 标记
这些文件大约 10K 行长,每个文件我需要大约 2700 行,所以我宁愿避免循环。此外,文件长度和所需行数也会因一些不可预测的因素而有所不同。
我尝试了 XML 包中的一些方法,但总是遇到一堆错误,例如“StartTag:无效元素名称”和“标记 MERGED-PUPIL-DATA 行 5443 中的数据过早结束”。
你有什么想法吗?有没有接受自定义标记标签的方法?
一个典型的文件可能看起来像这样(点表示我剪掉的东西)
<SESSION>
<VERSION>
2
<\VERSION>
<DATE>
2014-01-20 14:29:43
<\DATE>
<SUBJECT-ID>
SUB001
<\SUBJECT-ID>
<NOTE>
red300os
<\NOTE>
<MIN-MAX-PLOT>
0.100000 8707.554688
<\MIN-MAX-PLOT>
<STIMULUS-DEFINED>
redOS300
Default Human Relative Spectral Sensitivity
1 0
1 10.000000 20.000000 60.000000 1 3 2.000000 -100.000000 0.000000 0.000000 1
<\STIMULUS-DEFINED>
.
.
.
.
.
.
<MERGED-PUPIL-DATA>
% time is in sec; diameter is in mm; loci is in pixel; color code -> 100 = unknown, 0 = white, 1 = red, 2 = green, 3 = blue; intensity is in Lux or W/m2
% real time logical time R. valid R. diameter R. x loci R. y loci L. valid L. diameter L. x loci L. y loci R. led color R. led intensity L. led color L. led intensity
2703
-0.049000 -0.049000 1 5.483765 266.668732 268.837402 1 5.441666 272.687500 272.724976 100 0.000000 100 0.000000
-0.018000 -0.018000 1 5.478448 265.918732 267.837402 1 5.438361 270.687500 273.406219 100 0.000000 100 0.000000
.
.
.
.
89.932000 89.932000 1 5.604879 289.575165 273.574738 1 5.255306 301.056091 303.812744 3 0.000000 3 0.000000
89.964000 89.964000 1 5.650856 289.575165 269.574738 1 5.255306 301.056091 301.812744 3 0.000000 3 0.000000
<\MERGED-PUPIL-DATA>
.
.
.
<\SESSION>
【问题讨论】:
-
如果 是 s,我认为它更像是有效的 XML
-
如果可以接受外部工具并且你有一个 unix 工具集,我会使用
awk来匹配你想要的部分并将它们剪切成 R 可以读取的新文件。 -
你能发布一个完整数据集的链接吗?我认为您的问题之一是
color code -> 100=unknown,。 XML 包不喜欢元素文本中的<或>。
标签: xml r markup data-import