2017-11-06 17 views
1

私は開発中のパッケージに関数を持っています。入力データが関連しているとは思わないので、投稿していません。私は、パッケージからこの関数に特定の関数をインポートすることを推奨しています。これは、ほとんどの場合、data.tableを除いて正常に動作します。私はエラーを取得、上記のように行うとrパッケージ機能内でdata.tableを@importする方法

#' @importFrom data.table 'setDT' 'rowid' '.SD' 
#' @keywords Sankey 
#' @export 
    SurveySankey <- function(dfw, y,PatientID) { 
     # Create the Sankey diagrams 
     Sankey <- 
     dcast(data.table::setDT(dfw)[, .SD, PatientID], 
       PatientID ~ rowid(PatientID), 
       value.var = y) 
    } 

は:

1. Error: SurveySankey (@test.R#400) ------------------------------------------------------------------------------------------------- 
object '.SD' not found 

を代わりに@importfrom文の場合、私は

#' @import data.table 

を使用し、それは正常に動作します。関数名の一部が他のパッケージと衝突するため、後者を使用したくありません。 .SDはどうやってインポートできますか?これはインポート可能な関数ではないでしょうか?

+0

私は試しませんでしたが、(https://blog.rstudio.com/2015/10/29/roxygen2-5-0-0/)役立つ新しいタグ「@rawNamespace」が見つかりました。おそらく '@rawNamespace" importFrom(data.table、.SD、.N、.I、.GRP、.BY、.EACHI)のようなものが動作します(https://cran.r-project.org/docも参照してください) –

+0

あなたのコードの '@ importFrom'タグの綴りを誤って忘れましたか(ここではSOだけです)? →首都F! –

+0

param "dfw"の再現可能なデータセットが役立つでしょう。まったく同じエラーメッセージを引き起こす問題があります... Thx :-) –

答えて

2

.SDはまったく機能ではありません。

In the source code of the packageあなたは.SDだけのノートを防ぐためにエクスポートされていること、見ることができます。

.SD = .N = .I = .GRP = .BY = .EACHI = NULL 
# These are exported to prevent NOTEs from R CMD check, and checkUsage via compiler. 
# But also exporting them makes it clear (to users and other packages) that data.table uses these as symbols. 
# And NULL makes it clear (to the R's mask check on loading) that they're variables not functions. 
# utils::globalVariables(c(".SD",".N")) was tried as well, but exporting seems better. 
# So even though .BY doesn't appear in this file, it should still be NULL here and exported because it's 
# defined in SDenv and can be used by users. 

あなたはdata.tableから'special-symbols'をインポートしようとすることができます

代わり
#' @importFrom data.table "special-symbols" 

、あなただけのこの行を追加することができます.SD = .N = .I = .GRP = .BY = .EACHI = NULLあなたのパッケージに。

+0

上記のエラーを防ぐために何をインポートするのですか? –

+0

@clemensあなたは「特別記号」の文書を見つけましたか、それをどうやって見つけましたか? –

+0

シンプルなので、最後に.SDをutils :: globalVariablesに追加しました。私は@importFrom data.table "特別記号"を取得することができませんでした。 –

関連する問題