如何重复列表多次

时间:2019-08-27 12:14:15

标签: r

所以说我有一个列表

x <- as.list(c("john","jerry","james"))

以及值列表

y <- as.list(c(8,5,10))

我想遍历x的第一个元素,y的第一个元素的次数,并在最后添加一个后缀。因此,对于元素john,它将为john_1,john_2 ... john_8。那么jerry就是jerry_1,jerry_2 ... jerry_5。还有james_1,james_2,...,james_10

这是我尝试过的不起作用

z <- lapply(x, function(i){paste(i,"_",rep(max))})

但是那不给我我想要的东西。

也许,我不应该使用lapply或map *的某些版本,但不要对它们进行处理。

4 个答案:

答案 0 :(得分:5)

基于R的想法

.take(10)

答案 1 :(得分:3)

或者:

x <- as.list(c("john","jerry","james"))
y <- as.list(c(8,5,10))

lapply(seq_along(x), function(i) paste0(x[[i]], "_", seq_len(y[[i]])))

# [[1]]
# [1] "john_1" "john_2" "john_3" "john_4" "john_5" "john_6" "john_7" "john_8"
# 
# [[2]]
# [1] "jerry_1" "jerry_2" "jerry_3" "jerry_4" "jerry_5"
# 
# [[3]]
# [1] "james_1"  "james_2"  "james_3"  "james_4"  "james_5"  "james_6"  "james_7"  "james_8"  "james_9"  "james_10"

答案 2 :(得分:1)

如果可以为所有值使用单个向量,则可以使用pasterepsequence

paste(rep(x, y), sequence(y), sep = "_")

#[1] "john_1"   "john_2"   "john_3"   "john_4" "john_5"   "john_6" "john_7"  "john_8"  
#[9] "jerry_1"  "jerry_2"  "jerry_3"  "jerry_4" "jerry_5"  "james_1"  "james_2"  "james_3" 
#[17] "james_4" "james_5"  "james_6"  "james_7"  "james_8"  "james_9"  "james_10"

答案 3 :(得分:0)

一个选项是

paste(rep(x, y), unlist(lapply(y, seq)), sep="_")