如何根据不同的向量创建重复字符串的向量
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】:我们可以使用rep
、toString
和map
:
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 R
的strrep
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) %>% mutate(id = row_number()) %>% uncount(x) %>% group_by(id) %>% mutate(string = paste(string, collapse = ", ")) %>% slice(1)
。然后我尝试使用完成添加一个空的第二行但没有成功。以上是关于如何根据不同的向量创建重复字符串的向量的主要内容,如果未能解决你的问题,请参考以下文章