Как объединить строки в указанном порядке

Из этого поста пытались объединить строки по диагонали, как альтернативно объединить 3 строки, но безуспешно.

Мой вклад:

a<-c("a1","a2","a3")
b<-c("b1","b2","b3")
c<-c("c1","c2","c3")

Мой ожидаемый результат будет

   "a1" "b2" "c3" "a2" "b3" "a3"

Как получить вышеуказанное от

  c(rbind(a,b,c))  

2 ответа

Решение

Как насчет упорядочения вектора по значениям, полученным из строки и столбцов после установки нижней диагонали на пропущенную

mat <- rbind(a,b,c)

mat[lower.tri(mat)] <- NA
na.omit(mat[order(col(mat) - row(mat))])

Одним из способов было бы настроить Mark's решение

as.vector(na.omit(c(sapply(1:3, function(i) c(a[i], b[i+1], c[i+2])))))
#[1] "a1" "b2" "c3" "a2" "b3" "a3"

Также,

 vec1 <- c(a,b,c)
 indx <- seq(1,length(vec1), by=4)+rep(0:2,each=3)
 indx1 <- indx[indx <= length(vec1)]
 vec1[indx1[-length(indx1)]]
 #[1] "a1" "b2" "c3" "a2" "b3" "a3"
Другие вопросы по тегам