Заменить число на случайное число с таким же количеством цифр - PullRequest
0 голосов
/ 29 июня 2018

У меня есть строка, содержащая несколько чисел и связывающая каждую цифру со случайным числом сингла.
Например. «111» следует заменить на 3 случайных числа в диапазоне от 0 до 9, которые объединяются как «364».

Моя идея состояла в том, чтобы сопоставить число, получить количество цифр, вычислить как можно больше случайных чисел и объединить их, чтобы окончательно заменить мое совпавшее число:

test <- "this is 1 example 123. I like the no.37"
gsub("([0-9])", paste0(sample(0:9, nchar("\\1")), collapse = ""), test)

Моя цель - получить строку, в которой каждая цифра заменяется случайной цифрой. Э.Г.

"this is 3 an example 628. I like the no.09"

Я попробовал несколько подходов, но не могу найти хорошее решение.

1 Ответ

0 голосов
/ 29 июня 2018

Используйте библиотеку gsubfn, это упростит задачу:

library(gsubfn)
test <- "this is 1 example 123. I like the no.37"
gsubfn("[0-9]+", ~ paste0(sample(0:9, nchar(x)), collapse = ""), test)
[1] "this is 8 example 205. I like the no.37"

Здесь gsubfn будет соответствовать всем 1 или более цифрам в строке (см. Шаблон [0-9]+). Затем совпадения передаются обратному вызову, где nchar получает реальное значение захваченной подстроки (подстроки цифр).

...