list1 = c("X", "Y")
list2 = c("1", "2", "3")
我想要的是
c("X1", "X2", "X3", "Y1", "Y2", "Y3")
我该怎么做?可能有一个包做到这一点?我尝试paste()
,但它会混合输入条目(" X1," Y2"," X3")。
答案 0 :(得分:6)
我们可以使用__attribute__ ((section(".library")))
上的expand.grid
或outer
来获取所有组合,然后我们将vectors
组合在一起。
使用paste
,输出为expand.grid
,有两列,我们可以使用data.frame
粘贴输出数据集的每一行。
do.call(paste0
或者如上所述 v1 <- do.call(paste0,expand.grid(list1, list2))
v1[order(v1)]
#[1] "X1" "X2" "X3" "Y1" "Y2" "Y3"
是另一个选项,对于此操作应该非常快。输出为outer
,可以使用matrix
或vector
将其转换回as.vector
。
c
此外, c(t(outer(list1, list2, FUN=paste0)))
#[1] "X1" "X2" "X3" "Y1" "Y2" "Y3"
应与expand.grid
list
答案 1 :(得分:5)
list1 = c("X", "Y")
list2 = c("1", "2", "3")
as.character(sapply(list1, FUN = function(x) paste0(x, list2)))
# [1] "X1" "X2" "X3" "Y1" "Y2" "Y3"