Comment générer une séquence avec un motif récurrent entrecoupé de caractères aléatoires


sans fondement

J'essaie de générer une séquence de certaines lettres contenant un motif répétitif qui est entrecoupé de lettres aléatoires.

Par exemple: ABXXXXXXXABXXXXXXXABXXXXXXX, où X = A, B, C ou D, sélectionné au hasard.

Je dois également spécifier la longueur totale de la séquence, changer les lettres qui se répètent et à quelle fréquence elles le font (par exemple, pour faire répéter BC tous les 5 caractères).

Malheureusement, je n'ai pu arriver qu'à générer la séquence aléatoire de longueur définie, contenant des caractères sélectionnés:

set.seed(42)
x <- sample(letters[c(1, 2, 3, 4)], size=200, replace = TRUE)
Sotos

Voici une fonction personnalisée qui répète un motif fixe, tous les n caractères,

f1 <- function(x, overall_len, chars_repeat) {
    l1 <- rep(list(x), (overall_len / chars_repeat))
    res <- paste(sapply(l1, function(i)
        paste0(i, paste0(sample(letters[1:4], size = chars_repeat, replace = TRUE), collapse = ''),
        collapse = '')),
        collapse = '')
    return(res)
}

f1('WQ', 32, 8)
#[1] "WQcccdddacWQbacccabcWQccaaaaaaWQabbcddcb"
f1('BC', 20, 4)
#[1] "BCbdbcBCacbdBCdacbBCdbbaBCaccd"
f1('BC', 20, 10)
#[1] "BCdbbabacccaBCbabdbbbaac"
f1('AAA', 40, 5)
#[1] "AAAabcacAAAdbcbcAAAbdbdcAAAadcdcAAAcadbdAAAddaacAAAadcabAAAdbabb"

Articles connexes