[R] loop command to matrix
arun
smartpink111 at yahoo.com
Tue Nov 27 19:43:45 CET 2012
HI,
May be this helps you:
set.seed(5)
mat1<-matrix(sample(1:400,80,replace=TRUE),ncol=8,nrow=10)
split(mat1,col(mat1))
t(do.call(rbind,lapply(lapply(split(mat1,col(mat1)),function(x) cbind(matrix(x,ncol=1),mat1)),function(x){ res1<-rowMeans(t(apply(x,1,function(x) x[!(duplicated(x)|duplicated(x,fromLast=TRUE))])))
res<-x[,1]-res1
res})))
# 1 2 3 4 5 6
# [1,] -163.00000 -129.8571429 152.42857 -52.14286 118.142857 -79.57143
# [2,] 105.14286 16.0000000 121.14286 -181.71429 -100.571429 50.28571
# [3,] 162.14286 -111.0000000 -160.14286 -130.42857 121.000000 164.42857
# [4,] -123.71429 2.0000000 -150.00000 -239.14286 -9.428571 192.85714
[5,] -146.42857 -73.2857143 -130.42857 -187.57143 230.714286 233.00000
# [6,] 57.28571 -171.2857143 -44.42857 -41.00000 -12.428571 -89.00000
# [7,] 19.14286 -44.8571429 -23.14286 50.00000 125.428571 -105.42857
# [8,] 115.71429 152.2857143 187.71429 19.71429 -222.571429 -136.85714
# [9,] 184.85714 0.8571429 -187.71429 -70.00000 110.571429 -162.57143
#[10,] -189.85714 143.8571429 195.28571 -59.57143 49.000000 -178.42857
7 8
# [1,] 30.14286 123.85714
# [2,] -129.14286 118.85714
# [3,] 139.28571 -185.28571
# [4,] 198.57143 128.85714
# [5,] 257.00000 -183.00000
# [6,] 144.14286 156.71429
## [7,] 183.71429 -204.85714
# [8,] -182.57143 66.57143
# [9,] 173.42857 -49.42857
#[10,] 137.00000 -97.28571
A.K.
----- Original Message -----
From: eliza botto <eliza_botto at hotmail.com>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc:
Sent: Tuesday, November 27, 2012 12:51 PM
Subject: [R] loop command to matrix
Dear UseRs,Extremely sorry for a basic question. I have a matrix of 19 rows and 365 columns. what i want to do is the following...First i want to leave out column number 1 and want to calculate the row wise mean of the remaining columns, which will obviously give me 365 values in one column, and then subtracting these values from the column i left out i.e. col=1 then i want to leave out column 2 and calculate the row wise mean of the remaining columns which includes column 1 too and then subtracting these values from the column i left out i.e. col=2.and then continuing this process the last column. i know a kind of "manual way" of doing things but its extremely long and laborious.Is there any loop command or shorter way??
thanks in advanceregardseliza
[[alternative HTML version deleted]]
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list