заменить части строки вектором - PullRequest
0 голосов
/ 13 июня 2019

У меня проблемы с заменой частей одной строки набором векторных замен, чтобы привести к вектору.

У меня есть строка 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 заменяется векторизованным содержимым T$pattern

Я смотрел на Заменить строку в Rс шаблонами и заменами оба вектора и Замена строки на несколько строк , но они не соответствуют моему сценарию использования.stringr :: str_replace () тоже этого не делает.

1 Ответ

1 голос
/ 13 июня 2019

возможное решение baseR с использованием sprintf()

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 )

даст те же результаты.

...