[問題] 在建立的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