首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在quadprog中找不到'.QP_qpgen2‘?

为什么在quadprog中找不到'.QP_qpgen2‘?
EN

Stack Overflow用户
提问于 2017-07-11 23:21:31
回答 2查看 1K关注 0票数 4

我最近重新编写了一个脚本,它从quadprog包中调用了solve.QP (我目前的版本是1.5-5)。现在它生成错误"object '.QP_qpgen2‘not found“。我不明白为什么。

这个对象不是由我创建的,而是由quadprog中的solve.QP函数创建的。在Github上,Quadprog.R的代码是(第117行):

代码语言:javascript
复制
 res1 <- .Fortran(.QP_qpgen2,
               as.double(Dmat), dvec=as.double(dvec),
               as.integer(n), as.integer(n),
               sol=as.double(sol), lagr=as.double(lagr),
               crval=as.double(crval),
               as.double(Amat), as.double(bvec), as.integer(n),
               as.integer(q), as.integer(meq),
               iact=as.integer(iact), nact=as.integer(nact),
               iter=as.integer(iter), work=as.double(work),
               ierr=as.integer(factorized))

错误可能是从solve.QP的documentation中提取的代码生成的:

代码语言:javascript
复制
##
## Assume we want to minimize: -(0 5 0) %*% b + 1/2 b^T b
## under the constraints:      A^T b >= b0
## with b0 = (-8,2,0)^T
## and      (-4  2  0) 
##      A = (-3  1 -2)
##          ( 0  0  1)
## we can use solve.QP as follows:
##
Dmat       <- matrix(0,3,3)
diag(Dmat) <- 1
dvec       <- c(0,5,0)
Amat       <- matrix(c(-4,-3,0,2,1,0,0,-2,1),3,3)
bvec       <- c(-8,2,0)
solve.QP(Dmat,dvec,Amat,bvec=bvec)

如果有帮助的话,我使用的是R v3.4.1。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-12 18:23:51

正如我在评论中所说,R3.4有一个新的方法来注册外部例程。Quadprog依赖于Fortran例程。要解决这个问题,您需要在R3.4中使用当前的Rtools从源代码构建包。你需要安装和设置Rtools (谷歌搜索会让你找到如何为你正在使用的系统设置Rtools的指南)。然后,转到quadprog包的CRAN页面并下载源文件quadprog.tar.gz。最后,运行命令

代码语言:javascript
复制
install.packages("PATH_TO_FILE/quadprog_1.5-5.tar.gz", repos = NULL, type="source", INSTALL_opts = "--merge-multiarch")

或者,您可以等待几天。我确信,CRAN上的包很快就会更新。

票数 5
EN

Stack Overflow用户

发布于 2017-11-28 19:41:50

因为我不断收到关于这个问题的电子邮件:

使用packageDescription("quadprog")查看您安装的软件包是在哪个版本的R下构建的。

如果版本是R 3.3.x (或更早版本),请使用update.packages(checkBuilt=TRUE)将您的版本更新为在R 3.4.x下构建的版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45038609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档