Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数字序列拆分为大小相等的块并保存在r中的列表中_R_List_Function_Split_Divide - Fatal编程技术网

如何将数字序列拆分为大小相等的块并保存在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

我是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(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