Maybe something like this? N<-c(1,2,1,3) ## create empty matrix x<-diag(0,3) ## fill off diagonal x[row(x)==col(x)+1]<-N[1:2] # fill 3rd column x[1:2,3]<-N[3:4]
Or create a function and return both x and y mat3<-function(N) { x<-diag(0,3) # fill each element separately x[2,1]<-N[1] x[3,2]<-N[2] x[1,3]<-N[3] x[2,3]<-N[4] dimnames(x)<-list(c("D1", "D2", "D3"), c("E1", "E2", "E3")) y =sum(x) * x / (rowSums(x)%o%colSums(x)) list(x=x,y=y) } mat3(N) $x E1 E2 E3 D1 0 0 1 D2 1 0 3 D3 0 2 0 $y E1 E2 E3 D1 0.00 0.0 1.7500 D2 1.75 0.0 1.3125 D3 0.00 3.5 0.0000 francogrex wrote: > > I have generated the following: > > x= > E1 E2 E3 > D1 0 0 1 > D2 1 0 3 > D3 0 2 0 > > y= > E1 E2 E3 > D1 0 0 1.75 > D2 1.75 0 1.3125 > D3 0 3.5 0 > > Where x and y are linked by: > y =sum(x) * x / (rowSums(x)%o%colSums(x)) > > N=x[x[1:3,]>0] > R=y[y[1:3,]>0] > > Now suppose I ONLY have N and R linked in this way below where each N > corresponds to an R > > N R > 1 1.7500 > 2 3.5000 > 1 1.7500 > 3 1.3125 > > Is there a way to generate matrix "x" and matrix "y" having only the N > and the R as above? > > > -- View this message in context: http://www.nabble.com/Generating-these-matrices-going-backwards-tf4807447.html#a13756103 Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@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.