list1 = c("X", "Y")
list2 = c("1", "2", "3")
我想要的是
c("X1", "X2", "X3", "Y1", "Y2", "Y3")
我该怎么做?有可能有一个包可以做到这一点吗?我尝试了 paste()
但它交替混合了条目(“X1、“Y2”、“X3”)。
最佳答案
我们可以在向量
上使用expand.grid
或outer
来获取所有组合,然后粘贴
将其放在一起。
使用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
是另一个选项,对于此操作来说应该非常快。输出将是一个矩阵
,可以使用as.vector
或c
将其转换回向量
.
c(t(outer(list1, list2, FUN=paste0)))
#[1] "X1" "X2" "X3" "Y1" "Y2" "Y3"
<小时/>
此外,expand.grid
应该与 list
一起使用
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/