将向量的每个元素与另一个向量的每个元素连接起来

时间:2015-07-28 12:51:07

标签: r string

list1 = c("X", "Y")
list2 = c("1", "2", "3")

我想要的是

c("X1", "X2", "X3", "Y1", "Y2", "Y3")

我该怎么做?可能有一个包做到这一点?我尝试paste(),但它会混合输入条目(" X1," Y2"," X3")。

2 个答案:

答案 0 :(得分:6)

我们可以使用__attribute__ ((section(".library")))上的expand.gridouter来获取所有组合,然后我们将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,可以使用matrixvector将其转换回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"