在各种大小的矩阵上创建空行

Creating empty rows on matrix of various size

我正在尝试用以下数据生成一个矩阵,有什么方法可以创建空行以使矩阵大小相同吗?

#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)

我会说你最好的选择是从你需要的大小的空矩阵开始。您可以告诉矩阵在创建时指定维度,如下所示:

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:length(n)”部分将告诉 R 在输入您为其提供的值后停止填充该列。否则 R 会继续填充,你会得到重复的值,我猜你不想要的。