使用30个以上预测变量时,MuMin pdredge()中出现错误

使用30个以上预测变量时,MuMin pdredge()中出现错误,r,mumin,R,Mumin,我遇到了以下错误,仅当我将具有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

我遇到了以下错误,仅当我将具有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)
库(MuMIn)
图书馆(平行)
#随机数据:X1为响应,X2-X31(30)预测值

var.30中实际上只有16个参数,但有些参数被多次调用以表示交互项(尽管,OP是否真的希望它们表示交互,还是打算用于I(参数^2),尚不清楚;如果是后者,它们的代码将失败,因为会有太多的唯一参数)。因此,尽管这个问题中有许多(~41)项,但只有16个唯一参数


据我所知,@Kamil bartonń还没有更新
druge
以接受30多个唯一参数调用。

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


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

谢谢您的回答。我做了一些挖掘,并考虑投入时间来复制这篇科学论文。基本上,在需要时使用docall64生成一个编译包以支持64位整数。这是可以用MuMIn做的还是我在追逐梦想?@JonWells,我曾尝试使用
int64
软件包来实现这一点,但它与R的原生数字不兼容,所以我放弃了这个想法。我想,用两个整数编码组合比向包中添加C代码更值得,但我不希望很快有时间玩它。感谢您的回复!本文列出了一种“简单”的方法来创建现有包的64位shell,该包基本上是空的,并且依赖于使用dotCall64编译的普通包/函数,如果我理解正确,可以在整数和double之间转换。我可能在技术上不够熟练,无法独自完成这项任务,但也许这学期我会花一些时间问另一个问题。目前,为了完成模型选择工作,我刚刚通过其他方式取消了列。谢谢你的大包!我不能投票,但谢谢你的解释!我肯定认为这是41个预测因子,我做错了什么