2016-04-26 23 views
0

Ich versuche, eine Matrix mit den folgenden Daten zu generieren, Gibt es eine Möglichkeit, leere Zeilen zu erstellen, um Matrix die gleiche Größe zu machen?Erstellen von leeren Zeilen auf Matrix verschiedener Größe

#Generating original data 
n <- c(12,24) 
mu <- c(6.573,6.5) 
sigma <- sqrt(0.25) 
Diseased.Data <- round(rnorm(n[1],mu[1],sigma),4) 
Healthy.Data <- round(rnorm(n[2],mu[2],sigma),4) 
g <- c(2,3,4) 

cstar.pool <- (mu[1]+mu[2])/2 
#generating pooled data 
for(i in 1:3){ 
    assign(paste("pool.dis.data",i,sep = ""),replicate(n[1]/g[i],mean(sample(Diseased.Data,g[i])))) 
    assign(paste("pool.hel.data",i,sep = ""),replicate(n[2]/g[i],mean(sample(Healthy.Data,g[i])))) 
} 

#generating the pooled diseased data matrix 
dis.mat1<- matrix(data = pool.dis.data1,length(pool.dis.data1),1) 
dis.mat2 <- matrix(data = pool.dis.data2,length(pool.dis.data2),1) 
dis.mat3 <- matrix(data = pool.dis.data3,length(pool.dis.data3),1) 
dis.mat2 <- rbind(dis.mat2,NA) 
dis.mat2 <- rbind(dis.mat2,NA) 
dis.mat3 <- rbind(dis.mat3,NA) 
dis.mat3 <- rbind(dis.mat3,NA) 
dis.mat3 <- rbind(dis.mat3,NA) 
dis.matrix <- matrix(NA, max(length(pool.dis.data1),length(pool.dis.data2),length(pool.dis.data3)),3) 
dis.matrix[,1] <- cbind(dis.mat1) 
dis.matrix[,2] <- cbind(dis.mat2) 
dis.matrix[,3] <- cbind(dis.mat3) 
+0

nicht sicher, was Sie fragen, aber wenn Sie eine leere 6X3-Matrix wollen, können Sie versuchen: Matrix (nrow = 6, ncol = 3) -> dis.matrix – Chris

Antwort

1

Ich würde sagen, Ihre beste Wette ist, mit einer leeren Matrix der Größe anzufangen, die Sie brauchen. Sie können Matrix sagen die Dimensionen auf Schöpfung wie so zu spezifizieren:

new <- matrix(data = NA, nrow = 10, ncol = 20) 

So brauchen Sie nur einen Wert für jede Dimension zu erstellen, basierend auf Eingabedaten:

num.rows <- max(length(n), length(mu), ...) 
num.columns <- [ I'd just enter a numeric value here ] 
new <- matrix(data = NA, nrow = num.rows, ncol = num.columns) 

Dann Sie die füllen Spalten nach Bedarf, achten Sie darauf, überschüssige Leerstellen zu hinterlassen. Zum Beispiel:

new[(1:length(n)),3] <- n 

Die „1: Länge (n)“ Teil wird es R erzählen die Spalte, sobald die Werte zu stoppen Füllen Sie es eingegeben wurden, gegeben haben. Sonst wird R weiter gefüllt, und du wirst wiederholte Werte bekommen, die ich vermute, dass du nicht willst.

+0

Vielen Dank, neu [(1: Länge (n)), 3] <- n, das war der Befehl, den ich suchte. Es hat sehr geholfen. – JKJ