# [R] how to coerce part of each column of a matrix to a vector and merge them

zhaoxing731 zhaoxing731 at yahoo.com.cn
Tue Jan 11 06:32:35 CET 2011

Hello

Suppose I have a matrix mat=(1:16,2)
[,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16

there is a vector end=c(2,3,1,3)

#coerce the 1st 2 numbers of the 1st column to a vector  [1]  1  2
#coerce the 1st 3 numbers of the 2nd column and append it to the previous vector  [1]  1  2  5  6  7
#coerce the 1st number of the 3rd column and append it to the previous vector  [1]  1  2  5  6  7  9
#coerce the 1st 3 numbers of the 4th column and append it to the previous vector  [1]  1  2  5  6  7  9 13 14 15
#they are specified by vector end
a for loop
mat<-matrix(1:16,4)
end<-c(2,3,1,3)
vec<-numeric()
for (i in 1:4)
{vec<-c(vec,mat[1:end[i],i])
}
#the result
> vec
[1]  1  2  5  6  7  9 13 14 15

but when I want to do it to a large dataset, it's inefficiency becomes a problem, so need vectorization

Yours sincerely

ZhaoXing
Department of Health Statistics
West China School of Public Health
Sichuan University
No.17 Section 3, South Renmin Road
Chengdu, Sichuan 610041
P.R.China

__________________________________________________