如何在R中的xpath中使用变量?

时间:2012-09-30 05:17:44

标签: r

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

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

我想在xpathApply中使用变量,

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

它无法工作,如何在xpathApply中使用变量?

编写xpath表达式 想想Dason的建议,

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

没关系,但我觉得它很难看,我怎么能把它写得更漂亮?

2 个答案:

答案 0 :(得分:3)

如果我们在其参数包含fn$的替换的函数前面,gsubfn包可以在Perl的行中进行字符串插值。此处$x表示替代x的值。请参阅?fn和gsubfn home page

library(gsubfn)
x <- "PL"
tdata <- fn$xpathApply(data, "//table[@id='$x']")

答案 1 :(得分:1)

@Dason关于使用paste或类似内容的建议很可能是唯一的出路。如果你发现它很难看,可以通过创建自己的功能将它扫到地毯下:

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

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