Вам это помогает?
Создает небольшую функцию splitter
, которая принимает строку (убедитесь, что вы вводите строку как символ, а не как число, в противном случае ведущие нули теряются) и выводит подмножества.
# make sure that you use characters and not numbers here
# otherwise leading zeros are lost!
string <- "0101010101"
splitter <- function(t, k = 2) {
k <- min(k, nchar(t))
substring(t, seq(1, nchar(t) - 1, k), seq(k, nchar(t), k))
}
splitter(string)
#> [1] "01" "01" "01" "01" "01"
splitter(string, k = 3)
#> [1] "010" "101" "010"
splitter(string, k = 100)
#> [1] "0101010101"
## if you want to cast the values as numeric (sure that you want to case binaries to numerics?)
## use
v <- splitter(string, k = 2)
as.numeric(v)
#> [1] 1 1 1 1 1
Создано в 2020-03-18 пакетом Представить (v0.3.0)
Если вы убедитесь, что вы хотите всегда получать числовое значение c, используйте эту функцию
splitter2 <- function(t, k = 2) {
k <- min(k, nchar(t))
v <- substring(t, seq(1, nchar(t) - 1, k), seq(k, nchar(t), k))
as.numeric(v)
}
Если вы хотите декодировать двоичные значения в int, используйте strtoi(string, base = 2)
, то есть
string <- "0101010101"
splitter3 <- function(t, k = 2) {
k <- min(k, nchar(t))
v <- substring(t, seq(1, nchar(t) - 1, k), seq(k, nchar(t), k))
strtoi(v, base = 2)
}
splitter3(string, k = 2)
#> [1] 1 1 1 1 1
splitter3(string, k = 3)
#> [1] 2 5 2
Создано в 2020-03-18 пакетом Представить (v0.3.0)