繁体   English   中英

用变量值替换字符串中的变量名[R]

[英]Replace variable name in string with variable value [R]

我在R中有一个角色,说"\\\\frac{A}{B}" 我有AB值,比如510 有没有办法可以用510替换AB

我尝试了以下内容。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM