用向量替换字符串的一部分

replace parts of a string with a vector

我在用一组矢量替换替换单个字符串的部分以生成矢量时遇到问题。

我有一个字符串 tex 旨在告诉图表将什么文本作为节点(和其他)标签。

所以如果 tex"!label has frequency of !frequency" T 的列 label 的值为 c("chickens","ducks",...)frequency 的值为 c("chickens","ducks",...) 等, 函数 return 是一个类似于 c("Chickens has frequency of 35","Ducks has frequency of 12",...)

的向量

更正式地说,问题是:

给定一个小标题 T 和一个字符串 tex, return 一个长度为 nrow(T) 的向量,其中每个元素 = tex,但模式 !patterntex 中的每个元素都被矢量化内容替换共 T$pattern

我看了 Replace string in R with patterns and replacements both vectorsString replacement with multiple string 但它们不适合我的用例。 stringr::str_replace() 也不做。

可能 baseR-solution 使用 sprintf()

animals = c("chickens","ducks") 
frequency = c(35,12)

sprintf( "%s has frequency of %s", animals, frequency)

[1] "chickens has frequency of 35" "ducks has frequency of 12"

另外,

tex = "%s has frequency of %s"
sprintf( tex, animals, frequency )

会得到相同的结果。