【问题标题】:Using .Fortran() from R package with error saying function not available使用 R 包中的 .Fortran() 错误提示功能不可用
【发布时间】:2018-01-17 03:51:35
【问题描述】:

我尝试了以下代码:

library(quantreg) # to load the package
library(foreign)  # to load the package

.Fortran("rqfn", PACKAGE = "quantreg")

但我收到以下错误:

Error in .Fortran("rqfn", PACKAGE = "quantreg") : 
"rqfn" not available for .Fortran() for package "quantreg"

我已经安装了 Rtools。但这并不能解决问题。 我还检查了有关系统路径的问题(如在此站点中:https://github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows),但这没有问题。 谁能帮我一把?非常感谢。

【问题讨论】:

  • 你有没有仔细看源代码,看看那个子程序是否还在实际使用?是否有可能已被其他/更新的名称不同的版本替换?
  • 您好,乔兰,非常感谢您的帮助。这个“rqfn”功能仍在使用中,来自包的github页面:github.com/cran/quantreg/blob/master/src/rqfn.f,但是,当我检查安装这个quantreg的本地目录时,我找不到这个文件!
  • 函数rqfn未注册,见github.com/cran/quantreg/blob/master/src/init.c#L49。你可以使用rqfnbrqfnc 吗?
  • 您好,非常感谢拉尔夫。我试过rqfnbrqfnc,但是R中出现了同样的错误信息。
  • 这很奇怪。在 Linux 上,我也会收到错误消息,但这些消息类似于 Incorrect number of arguments (0), expecting 13 for 'rqfnb'。因此,当提供正确数量的参数时,它在原则上看起来是可用的。

标签: r fortran quantreg


【解决方案1】:

您可以构建自己的库:

  • 下载rqfn.frqfnb.fstepy 方法需要后者。
  • 致电R CMD SHLIB rqfn.f rqfnb.f
  • 像这样使用函数:

    data(stackloss)
    x <- stack.x
    y <- stack.loss
    n <- length(y)
    p <- ncol(x)
    dyn.load(paste0("rqfn", .Platform$dynlib.ext))
    
    .Fortran("rqfn",
         as.integer(n),
         as.integer(p),
         a = as.double(t(as.matrix(x))),
         c = as.double(y),
         rhs = double(p),
         d = double(n),
         beta = as.double(0.99995),
         eps = as.double(1e-6),
         tau = as.double(0.5),
         wn = double(10 * n),
         wp = double((p + 3) * p),
         aa = double(p * p),
         it.count = integer(2),
         info = integer(1))
    

【讨论】:

  • 谢谢 Stubner....我真的很感动....说实话,我不明白它是如何工作的以及为什么会这样......但这真的很好..非常感谢您一直以来对我的问题的关注..
猜你喜欢
  • 2015-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
相关资源
最近更新 更多