我甚至不知道如何描述正在发生的事情,除了R知道变量的值,然后在函数内部错误地应用它。这是直接从我的终端复制的:
var n = $("iframe").width();
R知道> n2
[1] 4
> rnorm(n2)
[1] 0.379217 -1.519947 1.602527
> rnorm(4)
[1] -0.93154715 -0.82908620 0.55084001 0.09018763
,它知道如何处理n2 = 4
,但不知何故rnorm(4)
被视为rnorm(n2)
。
以下是我的完整代码。我将R设置为将警告解释为错误,以停止出现问题的循环。运行此操作后,请检查rnorm(3)
的值,然后查看n2
的内容。
rnorm(n2)
我在Windows 7 64位上运行R 3.2.3。
对不起,我花了一点时间才把问题弄清楚了。长时间用户,第一次海报。
由于
答案 0 :(得分:1)
为了清楚访问此页面的其他人:上面的代码会导致错误:
Error in y[position:(position + n - 1)] = newy (from #9) :
(converted from warning) number of items to replace is not a multiple of replacement length
这是因为作业左侧的长度与右侧的长度不同:
length(position:(position+n-1))
# [1] 10
length(newy)
# [1] 9
追溯代码,导致newy
缩短的原因是什么?
lengths(list(newy1, newy0))
# [1] 6 3
n2
# [1] 4
“3”是罪魁祸首,应该是“4”。这是非常具体的R FAQ 7.31:
n2 == 4
# [1] FALSE
n2 - 4
# [1] -8.881784e-16
在分配round
时,您可以考虑使用floor
,ceiling
,as.integer
,n1 = p*n
或其他一些功能(自{{1}以来是分数)。
这种现象的一个问题是它并不总是表现不佳。