[英]Replace variable name in string with variable value [R]
我在R中有一个角色,说"\\\\frac{A}{B}"
。 我有A
和B
值,比如5
和10
。 有没有办法可以用5
和10
替换A
和B
?
我尝试了以下内容。
words <- "\\frac{A}{B}"
numbers <- list(A=5, B=10)
output <- do.call("substitute", list(parse(text=words)[[1]], numbers))
但是我在\\
上得到了一个错误。 有没有办法可以做到这一点? 我试图用实际变量值创建方程。
你可以使用stringi函数stri_replace_all_fixed()
stringi::stri_replace_all_fixed(
words, names(numbers), numbers, vectorize_all = FALSE
)
# [1] "\\frac{5}{10}"
尝试这个:
sprintf(gsub('\\{\\w\\}','\\{%d}',words),5,10)
我对gsub
比对substitute
更熟悉。 以下作品:
words <- "\\frac{A}{B}"
numbers <- list(A=5, B=10)
arglist = mapply(list, as.list(names(numbers)), numbers, SIMPLIFY=F)
for (i in 1:length(arglist)){
arglist[[i]]["x"] <- words
words <- do.call("gsub", arglist[[i]])
}
但当然这是不安全的,因为你正在迭代替换。 例如,如果第一个变量的值为“B”而第二个变量的名称为“B”,则会出现问题。 可能有一种更清洁的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.