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 необходим.
Надеюсь, поможет!