Произведите случайную выборку подстроки фиксированной длины из большой строки (R)

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

Каждая подстрока должна иметь длину 10 символов, а символы в подстроке должны быть в том же порядке, что и в SuperString.

Пример:

SuperString = "ADKFKDSLFSDHKENNCNEUNCIEOCIKEMNKSDFU...KJSDLJDFSKLDJSLJ"
substrings = ["FSDHKENNCN", "ADKFKDSLFS", ... ,"OCIKEMNKS"]

1 ответ

Решение
# Create a SuperString
set.seed(87)
SuperString = paste(sample(LETTERS, 1000, replace=TRUE), collapse="")

# Function to sample 10 characters in a row, starting at a random point
# in the string
sampleString = function(string) {
    nStart = sample(1:991,1)
    substr(string, nStart, nStart + 9)
}

# Run the function 100 times
substrings = replicate(100, sampleString(SuperString))

substrings
[1] "VEOUELBFTD" "OPTCIDDNXK" "SFHNKKGOWR" "RVJQYYUSAZ" "MQMBMKCTTI" "ZKLWETGMVR"
[7] "OOXFLGCGPX" "DXAVUMQMBM" "HOORFCFABC" "AMOYPOXXRA" "TGKWKKZUEK" "UYPRPYQCMU" 
...
[91] "RZNSLOBFBK" "FKUKMDUQIK" "YGXDXAVUMQ" "SIRAMRBXSH" "TAILZPHZYS" "OEOUTGKWKK"
[97] "XFLGCGPXKZ" "EDRVJQYYUS" "RHUZLBFNQX" "MUWUODCCFT"
Другие вопросы по тегам