【问题标题】:How to repeat a String N times in R?如何在R中重复一个字符串N次?
【发布时间】:2014-04-17 00:52:36
【问题描述】:

在 Ruby 中,我可以使用以下内容重复字符串 n 次:

例如"my_string" * 2 -> "my_stringmy_string"

在 R 中是否有同样简单的方法可以做到这一点?

【问题讨论】:

    标签: string r repeat


    【解决方案1】:

    您可以使用replicaterep

    replicate(2, "my_string")
    # [1] "my_string" "my_string"
    
    rep("my_string", 2)
    # [1] "my_string" "my_string"
    

    paste 会把它放在一起:

    paste(replicate(2, "my_string"), collapse = "")
    # [1] "my_stringmy_string"
    

    【讨论】:

      【解决方案2】:

      有了R 3.3.0,我们可以从base R使用strrep

      strrep("my_string",2)
      #[1] "my_stringmy_string"
      

      我们也可以在times中传递一个值向量

      strrep("my_string",1:3)
      #[1] "my_string"                   "my_stringmy_string"         
      #[3] "my_stringmy_stringmy_string"
      

      【讨论】:

        【解决方案3】:

        使用stringi包中的stri_dup函数

        stri_dup("abc",3)
        [1] "abcabcabc"
        

        它也是矢量化的,所以你可以这样做:

        > stri_dup(letters[1:3],4)
        [1] "aaaa" "bbbb" "cccc"
        

        性能对比:)

        > microbenchmark(stri_dup("abc",3),paste(replicate(3, "abc"), collapse = ""))
        Unit: microseconds
                                              expr    min     lq  median     uq     max neval
                                stri_dup("abc", 3)  2.362  3.456  7.0030  7.853  64.071   100
         paste(replicate(3, "abc"), collapse = "") 57.131 61.998 65.2165 68.017 200.626   100
        
        > microbenchmark(stri_dup("abc",300),paste(replicate(300, "abc"), collapse = ""))
            Unit: microseconds
                                                    expr     min       lq   median      uq     max neval
                                    stri_dup("abc", 300)   6.441   7.6995  10.2990  13.757  45.784   100
             paste(replicate(300, "abc"), collapse = "") 390.137 419.7740 440.5345 460.042 573.975   100
        

        【讨论】:

        • 在等待手指计划要输入的下一行时,我无法检测到微秒的差异,但对于替代方案 +1。这个包我以前见过,但还没用过。
        • 但是如果你必须使用这个函数 1000 次它会有所不同,不是吗? :)
        【解决方案4】:

        stringr 库提供函数str_dup()

        str_dup("my_string", 2)
        
        [1] "my_stringmy_string"
        

        它是通过字符串和时间向量化的:

        str_dup(c("A", "B", "C"), 2:4)
        
        [1] "AA"   "BBB"  "CCCC"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-08-19
          • 2011-06-30
          • 2010-09-21
          • 2015-10-16
          • 2013-10-12
          • 2018-07-04
          • 1970-01-01
          相关资源
          最近更新 更多