2013-05-03 110 views
4

我在使用devtools从github安装软件包后出现data.table软件包时遇到问题。当我在本地加载函数时,我的自定义函数(使用data.table函数)工作,但是当我在github上创建自定义包并从github安装包时,函数不再起作用。data.table&devtools:install_github错误 - 函数可以在本地运行,但不能在从github安装软件包后运行

负载所需的软件包:

require(PerformanceAnalytics) 
if(!require(PerformanceAnalytics)) install.packages("PerformanceAnalytics"); 
require(PerformanceAnalytics) 
require(data.table) 
if(!require(data.table)) install.packages("data.table"); require(data.table) 
require(devtools) 
if(!require(devtools)) install.packages("devtools"); require(devtools) 

创建一个虚拟数据集:

data(edhec) 
EDHEC<-data.frame(date=index(edhec),coredata(edhec)) 
EDHEC<-melt(EDHEC,id.vars="date") 
EDHEC<-data.table(EDHEC,key=c("variable","date")) 

使用GitHub的devtools安装我的包:

install_github("r_jfreels","jfreels"); require(jfreels) 

运行我的功能:

test_date(EDHEC) 

这给出了一个错误: “错误分钟(日期):无效的 '类型' 的说法(关闭)”:再次

test_date<-function(DF) { 
    DT<-data.table(date=DF$date,variable=DF$variable,value=DF$value,key=c('variable','value')) 
    DT[,list(start_date=min(date),end_date=max(date)),by=variable] 
} 

测试功能:

现在创建本地功能

test_date(EDHEC) 

This Works。

这使我疯狂,我不知道问题是什么。

+3

哇!您是否尝试过在包装版本上运行R CMD检查? – GSee 2013-05-03 17:56:28

回答

5

如果您将Depends: data.table添加到您的DESCRIPTION文件,它将“工作”。不过,你应该真的努力通过R CMD检查 - 现在,它离得很远。

+0

将“取决于:data.table”添加到DESCRIPTION文件起作用。 – jfreels 2013-05-03 18:22:32

+1

您可能需要为ggplot2,plyr,RColorBrewer,reshape2,xts以及您正在使用的其他任何项目添加依赖项。您可能希望将它们添加到Imports,并使用NAMESPACE中的'importFrom'来仅导入所需的符号,而不是将所有这些包添加到Depends。 – GSee 2013-05-03 20:38:04

+1

@jfreels为了将来的参考,已经有一个FAQ取决于:需要data.table。但不可否认的是,由于data.frame的继承性和交换机的工作方式,data.table依赖或导入有些棘手。搜索“[data.table] cedta”以获取更多信息。 – 2013-06-09 18:40:59

相关问题