所以说我有一个列表
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 *的某些版本,但不要对它们进行处理。
答案 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)
如果可以为所有值使用单个向量,则可以使用paste
,rep
和sequence
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="_")