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

时间:2016-04-26 01:39:34

标签: r matrix rbind cbind

我正在尝试使用以下数据生成矩阵,有没有办法创建空行以使矩阵具有相同的大小?

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

1 个答案:

答案 0 :(得分: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

&#34; 1:长度(n)&#34;一旦输入了您输入的值,R将停止填充该列。否则R会继续填写,你会得到重复的值,这是我猜你不想要的。