Мы могли бы использовать либо 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
другой вариант бея ch должен быть очень быстрым для этой операции. Выход будет matrix
, который может быть преобразован обратно в vector
либо с использованием 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"
я действительно должен мастер это 'expand.grid' вещь. Я всегда делаю 'rep' вручную ... – MichaelChirico
@MichaelChirico. 'expand.grid' - полезная функция. Предположим, имеется ли у нас список многих элементов. делая только 'list1 <- list (ПИСЬМА [1: 3], ПИСЬМА [4: 5], ПИСЬМА [6: 7]); expand.grid (list1) 'получит все возможные комбинации. – akrun
\ * язык в щеке * * но акрун, что, если я хочу практиковать свою арифметику, используя 'rep' !? – MichaelChirico