- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
5天前关闭。
Improve this question
我在R中写了一个for循环累加,为什么最后的结果是零?
有什么我能做的吗?谢谢。
mse =numeric()
for (i in 1:nrow(m1$v)){
i_d = 128-i
for (j in 1:ncol(m1$v)){
j_d = 128-j
lam_hij = m1$v[i,j]
lam_ij = km[i_d,j_d]
mse_ = ( lam_hij -lam_ij )^2
if (is.na(mse_)&&isTRUE(is.na(mse_))){mse_=0}
mse = mse + mse_
}
i = i+1
}
mse
我想看到零以外的东西
2条答案
按热度按时间e0bqpujr1#
两个问题:
1.你不展示数据。
1.不显示输出
我想在控制台对话框的这个小片段中可以看到可能发生的情况:
所以结果实际上不是零,而是一个空的(长度= 0)数值向量,对空加一些东西是可以论证的未定义的,所以人们可能期望NA作为结果,但在这个例子中肯定不是1。
您可以尝试将mse设置为0,然后重新运行代码。
q9yhzks02#
我不回答你的问题,因为我想上面有人做了。
但是考虑到你的代码,这里有一个建议。你应该在循环外创建向量,矩阵等,然后在循环内填充它们。这是为了避免在启动一些很长的循环时计算时间太长。
请看下面我的意思作为一个简单的例子。
您的方法需要一点时间,而它不应该。