[问题] 在建立的package中使用其它package功能

楼主: Carollax (更更)   2014-12-18 21:50:50
[问题类型]:
程式咨询
[软件熟悉度]:
使用者
[问题叙述]:
有一个函数,现在想把它包装成package
我参考板上《五分钟学会“如何使用Rstudio建立R套件”》去建package
函数当中会把输入的资料转成data.table,再用到“:=”的取代功能
但都会跳出错误讯息说我的资料型态不是data.table无法使用“:=”指令
问题是我加上print去查看资料的class,它的确是data.table
而此问题在包装成package前是不存在的,单纯source这个code是可以跑的
我猜想是不是在package中调用到其它套件要另外调整?
想请问这情况何解?
[程式范例]:
##
f <- function(data){
data <- data.table(data)
print(is.data.table(data))
data[,X:=20]
}
##
例如说上面这个函数,我直接source就没问题
但是如果弄成package就会显示以下错误讯息:
Error in `:=`(X, 20) :
Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are
defined for use in j, once only and in particular ways. See help(":=").
但用is.data.table去测试,发现确实是data.table没错
(奇怪的是data.table跟is.data.table也是data.table套件的函数,但皆运作正常)
[关键字]:
Package、data.table
作者: Wush978 (拒看低质媒体)   2014-12-18 22:10:00
在DESCRIPTION之中加上Depends: data.table呢?
楼主: Carollax (更更)   2014-12-18 22:20:00
成功了! 初次建package有点搞不清状况@@ 感谢!
作者: obarisk (OSWALT)   2014-12-18 22:53:00
这个好像没有办法用namespace解
作者: Edster (Edster)   2014-12-19 10:09:00
不能用namespace吗? 如果要引用的函数撞名怎么办?
作者: Wush978 (拒看低质媒体)   2014-12-19 11:12:00
这是data.table的问题吧, 导致要用它不能只Imports
作者: clickhere (It's time to go home.)   2014-12-21 10:46:00
不用namespace, pkg_a::a() pkg_b::b()pkg_b::a()
作者: gotodmcyo (键盘小妹)   2014-12-23 22:22:00
可以借问:: 是什么意思吗?
作者: obarisk (OSWALT)   2014-12-23 23:27:00
data.table的code感觉很有趣
作者: clickhere (It's time to go home.)   2014-12-24 00:28:00
help("::")

Links booklink

Contact Us: admin [ a t ] ucptt.com