0

当我解析一个网络文件时,它工作正常,

tdata=xpathApply(data,"//table[@id='PL']")

我想在 xpathApply 中使用变量,

x="PL"
tdata=xpathApply(data,"//table[@id=x]")

它不能工作,如何用变量在 xpathApply 中编写 xpath 表达式?

考虑达森的建议,

x="PL"
y=paste0("//table[@id='",x,"']")
tdata=xpathApply(data,y)

还可以,就是觉得丑,怎么写更美?

4

2 回答 2

3

gsubfn 包可以在某种程度上按照 Perl 的方式进行字符串插值,如果我们在参数包含替换的函数前面加上fn$. 这里$x的意思是代入 的值x。请参阅 ?fn 和gsubfn 主页

library(gsubfn)
x <- "PL"
tdata <- fn$xpathApply(data, "//table[@id='$x']")
于 2012-09-30T12:18:48.157 回答
1

@Dason 的使用paste或类似的建议很可能是唯一的方法。如果你觉得它难看,你可以通过创建你自己的函数来扫它:

my.xpathApply <- function(data, x) xpathApply(data, paste0("//table[@id='",x,"']"))
tdata <- my.xpathApply(data, "PL")

毕竟,你必须使用很多在paste某处使用的包函数,所以你应该可以拥有自己的一个:-)

于 2012-09-30T11:33:30.440 回答