如何用R中的相应变量替换所有标签?

时间:2013-12-02 08:33:47

标签: r parsing templates tags

我有一个类型的模板:

template <- "Average: {{av}} \n Sum: {{sum}}"
inputs <- list(av = "15", sum = "100")

我需要使用{{av}}的相应元素替换所有出现的{{sum}}inputs

我试过了:

gsub("\\{\\{(.+)\\}\\}", inputs["\\1"], template, perl = TRUE)

但它用“NULL”替换所有标签。

如何正确更换?

2 个答案:

答案 0 :(得分:3)

以前解决方案的替代方案:

for (i in names(inputs))
  regmatches(template,gregexpr(sprintf("\\{\\{%s\\}\\}", i), template)) <- inputs[[i]]

HTH

答案 1 :(得分:1)

你可以使用循环来完成。

template <- "Average: {{av}} \n Sum: {{sum}}"
inputs <- list(av = "15", sum = "100")
template.copy <- template



for (i in 1:length(inputs)) {
  x <- inputs[i]
  xn <- names(x)
  template.copy <- gsub(paste("\\{\\{", xn ,"\\}\\}", sep = ""), 
                        paste("\\{\\{", x, "\\}\\}", sep = ""), 
                        x = template.copy, perl = TRUE)
}

> template.copy
[1] "Average: {{15}} \n Sum: {{100}}"