【问题标题】:How to create a vector of repeated strings based on a different vector如何根据不同的向量创建重复字符串的向量
【发布时间】:2022-01-10 16:06:03
【问题描述】:

我正在尝试使用具有重复值的字符串向量,如下所示:

[1] "subcarinal, subcarinal"
[2] "subcarinal, subcarinal, subcarinal"

我希望每个单词的重复次数基于不同的向量:

x<-  2 0 2 3

我希望在这种情况下输出:

[1] "subcarinal, subcarinal"
[2] ""
[3] "subcarinal, subcarinal"
[4] "subcarinal, subcarinal, subcarinal"

我试过了,还是不行:

dat <- data.frame(name=rep("subcarinal", times=c(x)))

【问题讨论】:

    标签: r string


    【解决方案1】:

    我们可以使用reptoStringmap

    library(purrr)
    
    string<-'subcarinal'
    
    map_chr(x, ~toString(rep(string, .x)))
    
    [1] "subcarinal, subcarinal"            
    [2] ""                                  
    [3] "subcarinal, subcarinal"            
    [4] "subcarinal, subcarinal, subcarinal"
    

    【讨论】:

    • 使用toString的好主意!
    • 谢谢,太棒了!
    【解决方案2】:

    我们可以使用来自base Rstrrep

    dat <- data.frame(name = trimws(strrep("subcarinal, ", x), whitespace = ",\\s*"))
    

    -输出

    > dat
                                    name
    1             subcarinal, subcarinal
    2                                   
    3             subcarinal, subcarinal
    4 subcarinal, subcarinal, subcarinal
    

    或使用rep

    data.frame(name = mapply(function(u, v) toString(rep(u, v)), 
          rep("subcarinal", length(x)), x))
    

    数据

    x <- c(2, 0, 2, 3)
    

    【讨论】:

    • 我最好的尝试:tibble(string, x) %&gt;% mutate(id = row_number()) %&gt;% uncount(x) %&gt;% group_by(id) %&gt;% mutate(string = paste(string, collapse = ", ")) %&gt;% slice(1)。然后我尝试使用完成添加一个空的第二行但没有成功。
    猜你喜欢
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2012-06-13
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多