Slice a string at consecutive indices with R / Rcpp?

后端 未结 2 1231
鱼传尺愫
鱼传尺愫 2021-01-05 18:55

I want to write a function that slices a \'string\' into a vector, sequentially, at a given index. I have a fairly adequate R solution for it; however, I figure that writing

2条回答
  •  暖寄归人
    2021-01-05 19:45

    I would use substring. Something like this:

    strslice <- function( x, n ){   
        starts <- seq( 1L, nchar(x), by = n )
        substring( x, starts, starts + n-1L )
    }
    strslice( "abcdef", 2 )
    # [1] "ab" "cd" "ef"
    

    About your Rcpp code, maybe you can allocate the std::vector with the right size, so that you avoid resizing it which might mean memory allocations, ... or perhaps directly use a Rcpp::CharacterVector. Something like this:

    strslice_rcpp <- rcpp( signature(x="character", n="integer"), '
        std::string myString = as(x);
        int cutpoint = as(n);
        int len = myString.length();
        int nout = len / cutpoint ;
        CharacterVector out( nout ) ;
        for( int i=0; i

提交回复
热议问题