我正在使用一直运行到R3.0的软件包。
问题如上所述......当我们调用一个在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)
任何帮助将不胜感激
亚历
该套餐可在https://www.dropbox.com/s/zgspdzd2rq5jmh6/SolarSpectrum_1.0.tar.gz
找到安装包
R CMD INSTALL 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 :(得分:4)
此错误消息可能会影响使用.C()
或.Call()
调用来调用外部代码的函数。
问题在this R-help thread中有详细描述;特别是马丁摩根的回应很有用。当版本3.0.0发布时,他引用了R的NEWS
文件的条目。
没有PACKAGE的包中的外部函数调用(.C()等) 参数只会查看NAMESPACE中指定的第一个DLL 包的文件而不是搜索所有加载的DLL。一些 包中需要添加PACKAGE参数。
因此,需要在包的来源中修改对.C()
或.Call()
的调用,以包含PACKAGE = "name_of_dll_without_extension"
。
您可以使用以下代码找到DLL名称。
dir(system.file("libs", package = "rpkgname"))
答案 1 :(得分:0)
现在可能已经解决了;但是,尝试将SolarSpectrum.PAR中的.C调用的PACKAGE参数设置为“SolarSpectrum”(这可能涉及更改SolarSpectrum.PAR的包源文件)。这可能会让R看到正确的命名空间(我实际上没有尝试过这个,但它适用于具有相同错误的不同包)。