list1 = c("X", "Y")
list2 = c("1", "2", "3")
我想要的是
c("X1", "X2", "X3", "Y1", "Y2", "Y3")
我怎么做?可能有包装吗?我尝试了
paste()
,但是它交替混合了条目(“ X1”,“ Y2”,“ X3”)。 最佳答案
我们可以在expand.grid
上使用outer
或vectors
来获取所有组合,然后将它们组合在一起。
使用paste
,输出是具有两列的expand.grid
,我们可以使用data.frame
粘贴输出数据集的每一行。
v1 <- do.call(paste0,expand.grid(list1, list2))
v1[order(v1)]
#[1] "X1" "X2" "X3" "Y1" "Y2" "Y3"
或如上所述,
do.call(paste0
是另一个选择,对于此操作而言应该非常快。输出将是一个outer
,可以使用matrix
或vector
将其转换回as.vector
。 c(t(outer(list1, list2, FUN=paste0)))
#[1] "X1" "X2" "X3" "Y1" "Y2" "Y3"
此外,
c
应该与expand.grid
一起使用 list1 <- as.list(list1)
list2 <- as.list(list2)
do.call(paste0, expand.grid(list1, list2))
#[1] "X1" "Y1" "X2" "Y2" "X3" "Y3"
关于r - 将向量的每个元素与另一个向量的每个元素连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31676870/