2015-07-04 2 views
0

Мне интересен более короткий способ сделать это. По сути, у меня есть матрица 40 * 1000, и я хочу различать каждые 20 строк (например, diff (m1 [c (21,1),]) и хранить ее в пустой матрице 20 * 1000. Ниже приведен длинный версия:.Вводные различия между строками в пустую матрицу

m1.diff<-matrix(NA, nrow=nrow(m1)/2, ncol=ncol(m1)) # empty matrix with dimensions 
m1.diff[1,]<-diff(m1[c(21,1),]) # row 21 minus row 1 for all 1000 columns 
m1.diff[2,]<-diff(m1[c(22,2),]) # row 22 minus row 2 for all 1000 columns 
m1.diff[3,]<-diff(m1[c(23,3),]) 
m1.diff[4,]<-diff(m1[c(24,4),]) 
m1.diff[5,]<-diff(m1[c(25,5),]) 
m1.diff[6,]<-diff(m1[c(26,6),]) 
m1.diff[7,]<-diff(m1[c(27,7),]) 
m1.diff[8,]<-diff(m1[c(28,8),]) 
m1.diff[9,]<-diff(m1[c(29,9),]) 
m1.diff[10,]<-diff(m1[c(30,10),]) 
m1.diff[11,]<-diff(m1[c(31,11),]) 
m1.diff[12,]<-diff(m1[c(32,12),]) 
m1.diff[13,]<-diff(m1[c(33,13),]) 
m1.diff[14,]<-diff(m1[c(34,14),]) 
m1.diff[15,]<-diff(m1[c(35,15),]) 
m1.diff[16,]<-diff(m1[c(36,16),]) 
m1.diff[17,]<-diff(m1[c(37,17),]) 
m1.diff[18,]<-diff(m1[c(38,18),]) 
m1.diff[19,]<-diff(m1[c(39,19),]) 
m1.diff[20,]<-diff(m1[c(40,20),]) 

ответ

3

Как насчет

m1.diff <- m1[1:20, ]- m1[21:40, ] 

векторизованных оператор вычитания должен заботиться обо всем

Смежные вопросы