require(RQuantLib) завершается неудачей

Я пытаюсь загрузить 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" сообщает, что она установлена. (Я установил RQuantLib из терминала, используя "R CMD INSTALL RQuantLib", так как использование install.packages() из R не работало - это дало мне ошибку, сообщив, что QuantLib не был настроен, хотя он нормально работал с терминала.) Я бегу R с консоли R. QuantLib работает нормально, как и Rcpp.

Я проверил документ "NAMESPACE" в папке RQuantLib, и он говорит:

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].

Я пробовал гуглить, но не могу найти ничего полезного. Любая помощь будет очень ценится. Спасибо - Дом

2 ответа

Я думаю, что проблема в том, что на 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 box, поэтому я полагаюсь на кого-то вроде вас, кто поможет вам с лучшей настройкой конфигурации. Это должно просто работать, если вы копируете (или soft-link) quantlib-config на вашем пути (например, /usr/local/bin) или настроить $PATH в противном случае включить каталог, в котором он находится.

У меня была такая же проблема, и после нескольких часов борьбы мне удается использовать что-то не очень строгое, но это работает! Кажется, что у 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) и заменил qc в файле. R/inline.Rот:

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

и пересобрать пакет с помощью команды терминала R CMD install RQuantLib/, Как я уже сказал, не очень сексуально, но это работает. Перезапуск R и Rstudio необходим.

Надеюсь, поможет!

Другие вопросы по тегам