【发布时间】:2014-12-03 00:03:41
【问题描述】:
我想用我在 for 循环中生成的向量填充矩阵的行。但是,在我运行代码之后,矩阵仍然充满了 NA。
我能够很好地生成向量“l”——它是一个长度为 n (6) 的向量,但我似乎无法用 l 的迭代填充“h”。
非常感谢任何帮助。
p_def = 0.50
n = 6
N = 10
breaks = vector(length = n-1)
for (k in 1:N){
h <- matrix(nrow=N,ncol=n)
for (i in 1:(n-1)){
p = runif(1, 0, 1)
if (p <= p_def){
breaks[i] = 1
}
else {
breaks[i]=0
}
}
temp = 1
j =1
l = vector(length=n)
for (i in 1:n){
if (breaks[i] == 1){
l[j] = temp
temp = 1
j = 1 + j
if (i ==n-1) {
l[j]=temp}
}
if (breaks[i] == 0){
temp = temp + 1
if (i==n-1){
l[j] = temp
}
}
}
h[k,] <- l
}
h
在罗德里戈的帮助下,我将脚本编辑为:
p_def = 0.50 # probability of defective
n = 6 # length of spore chains
N = 10 # number of spore chains
breaks = vector(length = n-1)
h <- matrix(nrow=N,ncol=n)
for (k in 1:N){
for (i in 1:(n-1)){
p = runif(1, 0, 1)
if (p <= p_def){
breaks[i] = 1
} else {
breaks[i]=0
}
}
temp = 1
j =1
l = vector(length=n)
for (i in breaks){
if (i == 1){
l[j] = temp
temp = 1
j = 1 + j
if (i ==n-1) {
l[j]=temp}
}
if ([i == 0){
temp = temp + 1
if (i==n-1){
l[j] = temp
}
}
}
h[k,] <- l
}
h
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 2 2 2 0 0 0
[2,] NA NA NA NA NA NA
[3,] NA NA NA NA NA NA
[4,] NA NA NA NA NA NA
[5,] NA NA NA NA NA NA
[6,] NA NA NA NA NA NA
[7,] NA NA NA NA NA NA
[8,] NA NA NA NA NA NA
[9,] NA NA NA NA NA NA
[10,] NA NA NA NA NA NA
【问题讨论】:
-
你在循环中重置了
h。