require(RQuantLib)失败

时间:2014-09-30 09:33:59

标签: r quantlib

我正在尝试加载RQuantLib,但是我收到以下错误:

> require(RQuantLib)
Loading required package: RQuantLib
Error : .onLoad failed in loadNamespace() for 'RQuantLib', details:
  call: if (is.character(qc) && nchar(qc) > 1) {
  error: missing value where TRUE/FALSE needed
In addition: Warning message:
running command 'bash -c 'type -p quantlib-config' 2>/dev/null' had status 1 

我对编程很新,所以我不确定这意味着什么。我在Mac OS Maverick环境下工作,我下载了最新版本的RQuantLib(0.3.12),“R Package Installer”表示已安装。 (我使用“R CMD INSTALL RQuantLib”从终端安装了RQuantLib,因为在R中使用install.packages()不起作用 - 它给我一个错误,说明QuantLib没有配置,虽然从终端运行良好。)我从R控制台运行R. QuantLib工作正常,Rcpp也是如此。

我检查了RQuantLib文件夹中的“NAMESPACE”文档,它说:

import(methods)
importFrom(Rcpp, Rcpp.plugin.maker)

useDynLib(RQuantLib)

exportPattern("*.default")

export(
       ##--arrays.R
       "oldEuropeanOptionArrays",
       "EuropeanOptionArrays",
       "plotOptionSurface",
       ##--asian.R
       "AsianOption",
       ##--bermudan.R
       "BermudanSwaption",
       "summary.G2Analytic",
       "summary.HWAnalytic",
       "summary.HWTree",
       "summary.BKTree",
       ##--bond.R
       "ZeroCouponBond",
       "ZeroPriceByYield",
       "ZeroYield",
       "FixedRateBond",
       "FixedRateBondYield",
       "FixedRateBondPriceByYield",
       "FloatingRateBond",
       "ConvertibleZeroCouponBond",
       "ConvertibleFixedCouponBond",
       "ConvertibleFloatingCouponBond",
       "CallableBond",
       "FittedBondCurve",
       ##--calendars.R
       "isBusinessDay", "businessDay",
       "isHoliday",
       "isWeekend",
       "isEndOfMonth",
       "getEndOfMonth", "endOfMonth",
       "adjust",
       "advance",
       "businessDaysBetween",
       "getHolidayList", "holidayList",
       "setCalendarContext",
       ##--dayCounter.R
       "dayCount",
       "yearFraction",
       "setEvaluationDate",
       ##--discount.R
       "DiscountCurve",
       "plot.DiscountCurve",
       ##--implied.R
       "EuropeanOptionImpliedVolatility",
       "AmericanOptionImpliedVolatility",
       "BinaryOptionImpliedVolatility",
       ##--option.R
       "EuropeanOption",
       "AmericanOption",
       "AmericanOption.default",
       "BinaryOption",
       "BarrierOption"
       )

S3method("plot", "Option")
S3method("print", "Option")
S3method("summary", "Option")

S3method("plot", "Bond")
S3method("print", "Bond")
S3method("summary", "Bond")

如果我尝试指定终端写入的路径,它在安装RQuantLib时需要它,我会收到以下错误:

> require('RQuantLib', lib.loc = "C:/Users/dealmer/Library/R/3.1/library/RQuantLib/libs")
Loading required package: RQuantLib
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  no library trees found in 'lib.loc'

那么,我是否需要从那里移动到其他R库的位置? (在其他R库文件夹所在的文件夹中已经有一个名为“RQuantLib”的文件夹,例如我在那里找到了NAMESPACE文档)终端给我的路径我无法在Finder窗口中跟踪但是因为它没有显示“库”文件夹,我不知道如何做到这一点。)

这就是.libPaths()给我的东西:

> .libPaths()
[1] "/Users/dealmer/Library/R/3.1/library"                          
[2] "/Library/Frameworks/R.framework/Versions/3.1/Resources/library"

R库位于[2]。

我尝试过谷歌搜索,但我找不到任何有用的东西。任何帮助将非常感激。谢谢 - Dom

2 个答案:

答案 0 :(得分:1)

我认为问题是在Linux上我们在quantlib-config中有$PATH

edd@max:~$ quantlib-config --help
Usage: quantlib-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] \
                       [--libs] [--cflags]
edd@max:~$ quantlib-config --version
1.4
edd@max:~$ 

我没有OS X专栏,所以我依靠之类的人帮助进行更好的配置设置。如果您将quantlib-config复制(或软链接)到您的路径(例如/usr/local/bin),或者调整$PATH,否则它应该可以正常工作,否则包含它所在的目录。

答案 1 :(得分:0)

我遇到了同样的问题,经过几个小时的努力,我设法使用了一些不太严格的东西,但它确实有效! R似乎有一些评估system("bash -c 'type -p quantlib-config'")的问题。 安装QuantLib后,在终端中键入命令bash -c 'type -p quantlib-config',为我们提供了我的quantlib-config路径/opt/local/bin/quantlib-config

所以我回到了RQuantLib(版本0.4.0)的文件夹,并将文件R/inline.R中的qc替换为:

  

qc <- as.character("/opt/local/bin/quantlib-config")

使用终端命令R CMD install RQuantLib/重建包。 正如我所说,不是很性感,但它有效。 重启R和Rstudio是必要的。

希望它有所帮助!

相关问题