2013-08-12 1 views
3

Я использую пакет, который работал до R3.0.R: сообщение об ошибке --- ошибка пакета: «functionName» не разрешено из текущего пространства имен

вопрос, как указано выше .... когда мы называем функцию, которая работает в R 2.15.2 из R 3.0 мы получаем ошибку

Error in .C("solarspectrum3", as.double(lon), as.double(lat), as.double(timezone), : 
    "solarspectrum3" not resolved from current namespace (SolarSpectrum) 

любая помощь будет оценена

Alex

пакет может быть найден в https://www.dropbox.com/s/zgspdzd2rq5jmh6/SolarSpectrum_1.0.tar.gz

установить пакет

R CMD УСТАНОВИТЬ SolarSpectrum_1.0.tar.gz , затем

пробег

require(SolarSpectrum)

longitude=2

latitude=50

date=as.POSIXct("2008-06-06")

PAR <- SolarSpectrum.PAR(longitude, latitude, date)[2]

ошибка должна отображаться в это время

+0

Вы повторно установили все пакеты в соответствии с инструкциями при установке R 3.0.0? – joran

+1

-1 Какой пакет? Какая функция? Воспроизводимый пример? –

+0

Да, я переустановил пакет. Пакет - SolarSpectrum. Он недоступен из R-cran Repositery – user2619599

ответ

0

Это может быть решена в настоящее время; однако попробуйте установить аргумент PACKAGE для вызова .C в SolarSpectrum.PAR на «SolarSpectrum» (это может включать в себя изменение исходных файлов пакета для SolarSpectrum.PAR). Это может заставить R заглянуть в правильное пространство имен (я на самом деле этого не пытался, но он работал для другого пакета с той же ошибкой).

1

Это сообщение об ошибке может влиять на функции, вызывающие внешний код, используя вызовы .C() или .Call().

Проблема описана хорошо в this R-help thread; в частности ответ Мартина Моргана полезен. Он цитирует запись в файл NEWS R, когда была выпущена версия 3.0.0.

A foreign function call (.C() etc) in a package without a PACKAGE argument will only look in the first DLL specified in the NAMESPACE file of the package rather than searching all loaded DLLs. A few packages needed PACKAGE arguments added.

Так призыв к .C() или .Call() необходимо внести изменения в источнике программ пакета, чтобы включить PACKAGE = "name_of_dll_without_extension".

Вы можете найти имена DLL со следующим кодом.

dir(system.file("libs", package = "rpkgname")) 
Смежные вопросы