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


我想要的是

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


我怎么做?可能有包装吗?我尝试了paste(),但是它交替混合了条目(“ X1”,“ Y2”,“ X3”)。

最佳答案

我们可以在expand.grid上使用outervectors来获取所有组合,然后将它们组合在一起。

使用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,可以使用matrixvector将其转换回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/

10-11 04:05