如何根据不同的向量创建重复字符串的向量

Posted

技术标签:

【中文标题】如何根据不同的向量创建重复字符串的向量【英文标题】: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)))

【问题讨论】:

【参考方案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)。然后我尝试使用完成添加一个空的第二行但没有成功。

以上是关于如何根据不同的向量创建重复字符串的向量的主要内容,如果未能解决你的问题,请参考以下文章

如何从向量中拆分字符串[重复]

如何分隔列的字符串并将它们存储在向量中[重复]

根据用户输入更改箱线图显示 - 闪亮(不能强制类型“闭包”为字符类型的向量)

如何创建二维字符串向量并在其中插入数据?

删除字符串向量中前 2 个字符的重复项

R:如何在 R 中的两个重复项之间包含一个字符?