当我解析一个网络文件时,它工作正常,
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)
没关系,但我觉得它很难看,我怎么能把它写得更漂亮?
答案 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
的包函数,所以你应该可以使用自己的一个: - )