【发布时间】:2016-09-08 05:18:42
【问题描述】:
这是我第一次发帖,如有错误请见谅
我正在尝试从 pubmed 读取 xml 数据,以提取有关作者隶属关系的数据
每个条目都包含一组节点,如下所示:
<AuthorList>
<Author>
<LastName>Serra-Blasco</LastName>
<ForeName>Maria</ForeName>
<Initials>M</Initials>
<AffiliationInfo>
<Affiliation>Department of Psychiatry, Hospital de la Santa Creu i Sant Pau, Biomedical Research Institute Sant Pau (IIB Sant Pau), Universitat Autònoma de Barcelona (UAB), Centro de Investigación Biomédica en Red de Salud Mental (CIBERSAM), Barcelona, Catalonia, Spain.</Affiliation>
</AffiliationInfo>
</Author>
...
我想最终得到一个数据框,其中连续包含每个作者的姓名和所属机构。
我尝试使用 xpathSApply 来解析读取“//Author”的节点,并最终得到一个 xml 节点列表。
进一步解析被证明是一个问题:我已经编写了适用于该列表的单个元素的代码;
例如,如果列表是authorlist
我可以使用这个函数(在元素中使用 xpathSApply)为authorlist[[1]] 提取一个合适的数组
但是当我尝试围绕这个函数包装 lapply 时,它给了我一个错误,说它不能在列表上执行 xpathApply。确切的错误调用是:
UseMethod("xpathApply") 中的错误:没有适用的方法 'xpathApply' 应用于“list”类的对象
我推测 lapply 用 [i] 的等价物调用列表子集,而我需要的是 [[i]]。有没有解决的办法?还是我必须考虑一些其他规则来重写?
我愿意重写(这只是我正在做的一些玩笑)但是这个问题看起来很有趣,希望你能提供帮助!
【问题讨论】: