如何将数字序列拆分为大小相等的块并保存在r中的列表中
我是R的新手。 我试着把一系列数字分成大小相等的块, 例如 X基R解(返回向量而不是列表):如何将数字序列拆分为大小相等的块并保存在r中的列表中,r,list,function,split,divide,R,List,Function,Split,Divide,我是R的新手。 我试着把一系列数字分成大小相等的块, 例如 X基R解(返回向量而不是列表): n=6 split_positionsBase R解决方案(返回向量而不是列表): n=6 拆分位置这里有一种使用子字符串的方法 get_split_vec <- function(X) { n <- round(nchar(X)/2) list(substring(X, 1, n), substring(X, n+1)) } get_split_vec(123456798
n=6
split_positionsBase R解决方案(返回向量而不是列表):
n=6
拆分位置这里有一种使用子字符串的方法
get_split_vec <- function(X) {
n <- round(nchar(X)/2)
list(substring(X, 1, n), substring(X, n+1))
}
get_split_vec(123456798123)
#[[1]]
#[1] "123456"
#[[2]]
#[1] "798123"
get\u split\u vec这里有一种使用substring的方法
get_split_vec <- function(X) {
n <- round(nchar(X)/2)
list(substring(X, 1, n), substring(X, n+1))
}
get_split_vec(123456798123)
#[[1]]
#[1] "123456"
#[[2]]
#[1] "798123"
get\u split\u vec假设您的输入是字符串,即:
s <- "977787977970977972978076978676978831981132981883983671984264985265985806986064986346986909987749988622988959989165990746991001992535992747993482993506994293994873996102997740998210998458998781999295999464999529"
- 解决方案2:您可以制作一个矩阵来表示块
而且它的高效版本是
apply(matrix(utf8ToInt(s),nrow = 6),2,intToUtf8)
假设您的输入是字符串,即:
s <- "977787977970977972978076978676978831981132981883983671984264985265985806986064986346986909987749988622988959989165990746991001992535992747993482993506994293994873996102997740998210998458998781999295999464999529"
- 解决方案2:您可以制作一个矩阵来表示块
而且它的高效版本是
apply(matrix(utf8ToInt(s),nrow = 6),2,intToUtf8)
试试这个。将花括号内的数字更改为所需的长度。注意最后一件可能比要求的长度短
strsplit('012345678910232122', perl = TRUE, "(?<=\\d{6})")
# [[1]]
# [1] "012345" "678910" "2321"
strsplit('012345678910232122',perl=TRUE,”(?尝试此操作。将花括号内的数字更改为所需长度。请注意最后一块可能比所需长度短
strsplit('012345678910232122', perl = TRUE, "(?<=\\d{6})")
# [[1]]
# [1] "012345" "678910" "2321"
strsplit('012345678910232122',perl=TRUE,'(?该数字类似于9777879779709779729780769786769797883198113298188398367198426498526598580698606498634698690999877499886229889599891659907469910019925399274934829350699429399487391029977409982109984589987819992959464999529的长度或更长。该数字类似于9777878797977970797979977297979797979797878787878787878787878787878787767697979797979898888888319811389898989898989898989898989898989898989898989898989898989898989898989898989898989898998634698690999877499886229889599891659907469910019925399274799348299350699429399487399610299774099821099845899878199929599949464999529此长度或更长。97778797797097797297807676769731981132981883983671984264985265985806964860634698699869998787749989898989897469910019959927489898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989899994649529不适用于这样长的数字。@WaqasAhmed它可以工作,但输出格式不正确。请将其作为字符串传递get\u split\u vec("977787977970977972978076978676978831981132981883983671984264985265985806986064986346986909987749988622988959989165990746991001992535992747993482993506994293994873996102997740998210998458998781999295999464999529")
977787977970977972978076978676979797883198113298188398367198426498526598580698606498634698690999877499886229889599891659797469910019925399274799348293506994293994873996102997740998210998458998781999295999994949464999529不适用于这样长的数字。@WaqasAhmed可以工作,但输出格式不正确。改为字符串传递获取“拆分”向量(“977787977970977972978076978676978831981132981883983671984264985265985806986064986346986909998774998862298895998916599074699100199255992747993482935069942994873996102997740998210998458998781999295949994929”)
感谢@IceCreamToucan!我将更新您对我的解决方案2的反馈意见@IceCreamToucan!我将更新您对我的解决方案2的反馈意见
string <- "aaaaaa"
if (!(nchar(string) %% 6)) {
stop("String length is not divisible by 6!")
}
#> Error in eval(expr, envir, enclos): String length is not divisible by 6!
# If you need to return a vector of strings which are divisible by 6
strings <- c("aaaaaa", "bbbbbbb")
sapply(strings, function(x) nchar(x) %% 6 == 0, USE.NAMES = FALSE)
#> [1] TRUE FALSE