2013-08-13 3 views
2

Предположим, у меня есть т векторов: a_1 = (a_{11}...a_{1n}) ... a_m = (a_{m1}...a_{mn}) Я хочу новый вектор Ь длины тп такое, что
b = (a_{11}...a_{m1} a_{12}...a_{m2}...a_{1n}...a_{mn}) я могу думать для цикла, например:Создать новый вектор, сформированный список векторов

>a<-c(1,1,1);b<-c(2,2,2);c<-c(3,3,3) 
>x<-NULL 
>for (i in 1:3) {x<-c(x,c(a[i],b[i],c[i]))} 
>x 
[1] 1 2 3 1 2 3 1 2 3 

Есть ли лучший способ?

ответ

4

Или с помощью mapply ...

c(mapply(c , a , b , c) ) 
[1] 1 2 3 1 2 3 1 2 3 
+2

Очень приятно, за исключением использования OP 'c' в качестве имени объекта, что приводит к сбою полной читаемости. Я бы также предложил 'as.vector' вместо' c' для принуждения к вектору ... – A5C1D2H2I1M1N2O1R2T1

2
c(matrix(c(a, b, c), nrow=length(a), byrow=TRUE)) 
+4

Или 'as.vector (rbind (а, б, в))'. – Roland