1

我遇到了以下错误,仅当我将具有超过 30 个预测变量的模型传递给 pdredge() 时才会发生:

sprintf(gettext(fmt, domain = domain), ...) 中的错误:无效格式 '%d'; 对数字对象使用格式 %f、%e、%g 或 %a

我在通过 RStudio 运行 Microsoft R Open 的 Windows 机器上:

R version 3.5.3 (2019-03-11)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
RStudio Version 1.0.153
MuMIn_1.43.6

可重现的例子:

library(MuMIn)
library(parallel)

#Random data: X1 as response, X2-X31 (30) predictors
var.30 <- data.frame(replicate(31,sample(0:100,75,rep=TRUE)))

#Random data: X1 as response, X2-X32 (31) predictors
var.31 <- data.frame(replicate(32,sample(0:100,75,rep=TRUE)))

#prepare cluster for pdredge
clust <- try(makeCluster(detectCores()-1))

#working model (30 or less predictors)
mod <- lm(X1 ~ ., data=var.30, na.action = "na.fail")
sub.dredge <- pdredge(mod, cluster=clust, eval=FALSE)

#Non-working model (31 or more predictors)
mod <- lm(X1 ~ ., data=var.31, na.action = "na.fail")
sub.dredge <- pdredge(mod, cluster=clust, eval=FALSE)

我在 2016 年知道这是整数位限制的问题。但是,从这个问题和收到的评论来看,我的印象是问题已经解决并且最大值发生了变化?

4

2 回答 2

1

在您引用的第二个问题中实际上只有 16 个参数,但有些参数被多次调用以表示交互项(尽管,该 OP 是否真的希望它们表示交互,或者用于 I(parameter^2),尚不清楚;如果后者,他们的代码会失败,因为会有太多的唯一参数)。因此,即使该问题中有很多(约 41 个)术语,也只有 16 个唯一参数。

据我所知,@Kamil Bartoń 尚未更新dredge以接受超过 30 个独特的参数调用。

于 2020-01-14T21:25:49.600 回答
0

31 个术语的限制dredge几乎是终极的。除非 R 实现对 64 位整数的本机支持,否则不会对其进行扩展。

(另外,更新您的 MuMIn - 此“sprintf”错误已在一段时间前修复)

于 2020-01-15T15:32:56.693 回答