【发布时间】:2012-10-29 02:37:37
【问题描述】:
我正在尝试在 R 中将 predict 与 loess 对象一起使用。有 112406 个观察值。在stats:::predLoess 中有一个特定的行,它试图将N*M1 与N=M1=112406 相乘。这会导致整数过低,并且函数会爆炸。执行此操作的代码行如下(从predLoess 源复制):
L <- .C(R_loess_ise, as.double(y), as.double(x), as.double(x.evaluate[inside,
]), as.double(weights), as.double(span), as.integer(degree),
as.integer(nonparametric), as.integer(order.drop.sqr), as.integer(sum.drop.sqr),
as.double(span * cell), as.integer(D), as.integer(N), as.integer(M1),
double(M1), L = double(N * M1))$L
有没有人解决这个问题或找到解决这个问题的方法?我正在使用 R 2.13。这个论坛的名字很适合这个问题。
【问题讨论】:
-
如果你能破解代码,你能把那一段改成
L = double(as.double(N)*M1)吗? -
R 2.13已经过时了。快速浏览新闻栏目可以看到后续版本中对loess()和predict.loess的改进。尝试更新到R 2.15.2并查看问题是否仍然存在 -
不幸的是,我在集群上运行 R,在这件事上没有太多选择。我可能会尝试在本地复制此数据集并进行绘图,因为它太小了
-
好吧,即使您无法运行新版本等,您也可以将
predLoess(dump()的代码写入文件,编辑,将名称更改为@987654335 @ 避免混淆,source()...(快速浏览表明问题仍然存在于 R-devel 中) -
我正在运行 r-devel,所以我只是看了一眼文件的源代码,发现
L=double(N*M1)仍然存在,并且使用N=M=112406测试此语句仍然会导致溢出。
标签: r double stack-overflow loess