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

时间:2019-06-13 10:19:36

标签: r stringr stringi

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

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

因此,如果tex"!label has frequency of !frequency" T的列label的值为c("chickens","ducks",...),列frequency的值为c("chickens","ducks",...),除其他外, 该函数返回像c("Chickens has frequency of 35","Ducks has frequency of 12",...)

这样的向量

更正式地说,问题是:

给出一个小标题T和一个字符串tex, 返回一个长度为nrow(T)的向量,其中每个元素= tex,但其中模式tex!pattern的{​​{1}}中的每个出现都由{{1 }}

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

1 个答案:

答案 0 :(得分:1)

使用sprintf()

的可能的baseR解决方案
animals = c("chickens","ducks") 
frequency = c(35,12)

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

[1]“鸡的频率为35”“鸭子的频率为12”

也是

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

将给出相同的结果。