首页 > 解决方案 > 引用同名的列表对象

问题描述

在处理 xml 数据(书目)时,我通过 xmlToList 命令将标签转换为列表。问题是有多个具有相同标签的元素显示为具有相同名称的列表元素,例如,共同创作的作品将具有两个相同的标签,它们成为两个相同的列表对象名称,如 $rec$stuff$record$author。例如:

假设列表称为 A1:

$`rec`$`header`$`controlInfo`$artinfo$aug$au
# [1] "Smith, Bob"

$`rec`$`header`$`controlInfo`$artinfo$aug$au
# [1] "Jones, Mike"
A1$`rec`$`header`$`controlInfo`$artinfo$aug$au

始终是“史密斯,鲍勃”。

在不重命名列表元素的情况下,我似乎找不到一种明显的方法来引用第二个条目“Jones,Mike”(出于解析数据以外的其他原因,我宁愿不这样做)。另外,如果可能的话,如果没有第二个具有相同名称的元素,我需要能够将 NA 分配给第二个位置。有没有办法做到这一点?

提前致谢!

标签: r

解决方案


您可以使用双括号在 R 中索引列表(请参阅如何在 R 中索引列表对象的元素)。尝试这个:

> rec = list()
> rec
list()
> rec$x = "first"
> rec
$x
[1] "first"

> rec2 = c(rec,rec)
> rec2
$x
[1] "first"

$x
[1] "first"

> rec2$x = "second"
> rec2
$x
[1] "second"

$x
[1] "first"

> rec2[[1]]
[1] "second"
> rec2[[2]]
[1] "first"
> rec2[[2]] = "third"

> rec2
$x
[1] "second"

$x
[1] "third"

推荐阅读