回复 第3楼 的 chealsea:
回答问题之前提一点建议,关于提问,一定要记住两点:
1. 一个不值得自己花时间思考的问题,更不值得别人花时间来回答。
2. 提问题是一门学问,把一个问题阐述清楚,比回答问题要难的多。
一个清晰明确的阐述,再展现出自己对问题的思考,这样的问题被回答的概率非常高,反之则没有人想看。所以对于你1楼的问题,是一个典型的让人没有欲望去回答的问题。如果把三楼的内容加上就会好很多了。(这里不再多说,不过感觉应该专门来发个贴讨论下如何问问题[s:11])
在回到你的问题,代码中有几个问题
1. 代码可读性不高,对于R来说没问题,对于人来说不够清晰(比如一行好几条命令用,空格换行的问题。。。)
2. 这段代码不是 R 的方式,更像 C 或者 python 的方式,R中一定有更简单的办法
3. 最好能把代码放在 code 标签中,这样语法高亮更容易读(可以看下回复窗口下面的发帖的说明)
这些对于你自己或者对于R来说(也许)都不是问题,你明白,R也能明白。但是如果要和别人交流,那就都变成了问题。我重写了一下你的代码,主要是调整了下格式。可读性高了些,可是很遗憾,还是没有搞清楚你是想要干什么。
但是不要紧,还是大概找到了些端倪,以下是你的部分代码做了一点点改变:
<br />
x <- array(0, dim=c(545,50,3))<br />
z=0<br />
y=0<br />
p=0</p>
<p>for(j in 1:50){</p>
<p> for(i in 2:545)<br />
{<br />
x[1, j, 1] <- 2.51<br />
h <- 1/545<br />
q <- rnorm(1)<br />
c <- x[i-1, j, 1]<br />
x[i,j,1] <- c*h*q<br />
x[i,j,3] <- 100*x[i, j, 1]/2.6<br />
}</p>
<p> x[545, j, 2]=102</p>
<p> if (x[544,j,3] > max(x[545, j, 2], x[545, j, 3]))<br />
{<br />
z[a] <- x[544, j, 1]<br />
y[a] <- max(x[545, j, 2], x[545, j, 3])<br />
a <- a+1<br />
}<br />
}</p>
<p># before send to the linear model,<br />
# let's check the input argument<br />
y<br />
z<br />
到这里,你看看 y 和 z 是你预期的结果吗?不是的话就要在你这个用来赋值的嵌套 for loops 里面找原因了。因为我看不懂你想要做什么,没办法重写。但是有两个方法可以让我们继续来寻找问题所在:
1. 仔细描述你想要做什么,包括对于 y 和 z 的赋值,拟合模型,如何对 x 赋值,等等。要仔细,让其他人能够明白。或者,
2. 提炼出一个有代表性的,简洁的,可以重复错误的一小段代码,大家可以一块来研究一下。
</p>