【问题标题】:iterative string substitution迭代字符串替换
【发布时间】:2014-06-03 01:53:22
【问题描述】:

我有一个字符串,我想每 3 个字符在一个子字符串中添加交换,并为每次迭代生成 1 个输出:例如

print(str1)
DDDDDDDDDDDDDDDDDDDDDDDD

print(str2)
nnn

输出应该是这样的

nnnDDDDDDDDDDDDDDDDDDDDDD
DDDnnnDDDDDDDDDDDDDDDDDDD
DDDDDDnnnDDDDDDDDDDDDDDDD
DDDDDDDDDnnnDDDDDDDDDDDDD
DDDDDDDDDDDDnnnDDDDDDDDDD
DDDDDDDDDDDDDDDDnnnDDDDDD
DDDDDDDDDDDDDDDDDDDnnnDDD
DDDDDDDDDDDDDDDDDDDDDDnnn

有什么想法吗?

【问题讨论】:

    标签: string r gsub


    【解决方案1】:
    positions <-  seq(1, nchar(str1), by=nchar(str2))
    split.str1 <- substring(str1, positions, positions+nchar(str2)-1)
    
    result <- sapply(seq(nchar(str1)/nchar(str2))
                     , function(i) {
                       split.str1[i] <- str2
                       paste(split.str1, collapse='')
                     })
    result
    ## [1] "nnnDDDDDDDDDDDDDDDDDDDDD" "DDDnnnDDDDDDDDDDDDDDDDDD" "DDDDDDnnnDDDDDDDDDDDDDDD" "DDDDDDDDDnnnDDDDDDDDDDDD"
    ## [5] "DDDDDDDDDDDDnnnDDDDDDDDD" "DDDDDDDDDDDDDDDnnnDDDDDD" "DDDDDDDDDDDDDDDDDDnnnDDD" "DDDDDDDDDDDDDDDDDDDDDnnn"
    

    感谢@BondedDust 提出的矩阵建议:

    as.matrix(result)
    ##      [,1]                      
    ## [1,] "nnnDDDDDDDDDDDDDDDDDDDDD"
    ## [2,] "DDDnnnDDDDDDDDDDDDDDDDDD"
    ## [3,] "DDDDDDnnnDDDDDDDDDDDDDDD"
    ## [4,] "DDDDDDDDDnnnDDDDDDDDDDDD"
    ## [5,] "DDDDDDDDDDDDnnnDDDDDDDDD"
    ## [6,] "DDDDDDDDDDDDDDDnnnDDDDDD"
    ## [7,] "DDDDDDDDDDDDDDDDDDnnnDDD"
    ## [8,] "DDDDDDDDDDDDDDDDDDDDDnnn"
    

    【讨论】:

    • 如果您将as.matrix 包裹在它周围,它看起来更像是请求的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多