2016-04-26 19 views
0

私は次のデータを持つ行列を生成しようとしていますが、行列を同じサイズにするために空の行を作成する方法はありますか?さまざまなサイズの行列に空の行を作成

#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

空いている6X3行列が必要な場合は、行列(nrow = 6、ncol = 3)→dis.matrix – Chris

答えて

1

私は、あなたが必要とするサイズの空行列で始めることをお勧めします。あなたはそのような創造の寸法を指定するには、行列を伝えることができます。

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

だから、あなたは自分の入力データに基づいて、各次元の値を作成する必要があります。

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) 

を次にあなたが埋めることができます余分な空が残っていることを確認してください。たとえば:

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

:あなたはそれを与えた値が入力されたら、「1の長さ(N)」の部分は、列を埋める停止するようにRが教えてくれます。さもなければ、Rは塗りつぶし続けます。繰り返し値を得るでしょう。私はあなたが望んでいないと推測しています。

+0

ありがとうございます。新しい[(1:length( n))、3] < - n、これは私が探していたコマンドでした。それは多くの助けとなりました。 – JKJ

関連する問題