Фон
У меня есть файл настроек xml, который может выглядеть следующим образом:
<level1>
<level2>
<level3>
<level4name>bob</level4name>
</level3>
</level2>
</level1>
, но может быть несколько экземпляров level3
<level1>
<level2>
<level3>
<level4name>bob</level4name>
</level3>
<level3>
<level4name>jack</level4name>
</level3>
<level3>
<level4name>jill</level4name>
</level3>
</level2>
</level1>
также может быть несколько типов level4
узлов для каждого level3
:
<level3>
<level4name>bob</level4name>
<level4dir>/home/bob/ </level4dir>
<level4logical>TRUE</level4logical>
</level3>
В R я загружаю этот файл, используя
settings.xml <- xmlTreeParse(settings.file)
settings <- xmlToList(settings.xml)
Я хочу написать скрипт, которыйпреобразует все значения, содержащиеся в level4type1
, в вектор уникальных значений на этом уровне, но я глупо пытаюсь сделать это так, чтобы это работало для всех вышеперечисленных случаев.
Один изпроблема в том, что class(settings[['level2']])
- это список для первых двух случаев и матрица для третьего случая.
> xmlToList(xmlTreeParse('case1.xml'))
$level2.level3.level4name
[1] "bob"
> xmlToList(xmlTreeParse('case2.xml'))
level2
level3.level4name "bob"
level3.level4name "jack"
level3.level4name "jill"
> xmlToList(xmlTreeParse('case3.xml'))
level2
level3 List,3
level3 List,1
level3 List,1
Вопросы
У меня два вопроса:
как мне извлечь вектор уникальных значений 'level4type1`
Есть ли лучший способ сделать это?