0

R パッケージを作成し、CRAN に提出しました。CMD チェック出力 1 注:

楽しい: グローバル変数 'id' の目に見えるバインディングがありません

CRAN は、私がそれを修正することを提案しました。

fun() (私の関数の 1 つ) は、別のソフトウェアによって作成されたファイルを読み取るためのカスタム インポートです。これらのファイルは非常に大きなデータセットです。したがって、インポートを最適化しているので、パフォーマンスを向上させるだけでなく、foverlaps() などの後続の関数を実行するために必要な data.table と set key を使用します。

私は使用しています:

data.table::setDT(dataImport)

data.table::setkey(dataImport, id)

setkey() がこのメモを作成するのはなぜですか?

メモを作成せずにキーを設定するにはどうすればよいですか?

次の QA ( data.table にキーを設定する目的は何ですか? ) は、setkey() を理解するのに非常に役立ちますが、これも data.table のドキュメントも、これが発生する手がかり (私が見つけたもの) を提供していないようです。特定の問題。ありがとうございました

更新 - この問題に直面している機能の要旨を以下に示します。

readoqcsv <- function(x) { dataImport <- utils::read.table(file = x, header = TRUE, sep = "," , dec = "." , colClasses = c("character", "integer", "character", "character", "integer", "NULL", "NULL", "NULL", "integer", "NULL", "NULL", "NULL", "NULL", "factor", "NULL", "NULL", "NULL", "NULL", "NULL"), comment.char = "")

data.table::setDT(dataImport)


dataImport$timeStampO <- strptime(dataImport$timeStampO, "%m/%d/%y  %H:%M")

dataImport$session_started <- strptime(dataImport$session_started,"%m/%d/%y  %H:%M")

dataImport$session_finished <- strptime(dataImport$session_finished,"%m/%d/%y %H:%M")

dataImport$id <- c(1:nrow(dataImport))

以下は、(実行された場合)注を引き起こす行です:

# data.table::setkey(dataImport, id)

return(dataImport) }

4

1 に答える 1

1

私の場合、機能したのは、Arun が提案したように、関数setkey()をに置き換えることでした。setkeyv()

これにより、CMD チェックが作成されます。 注:

data.table::setkey(dataImport, id)

これはNOTEフリーで実行されます:

data.table::setkeyv(dataImport, cols = "id")

data.table documentationに基づいて、 setkeyv() の使用は同等のようです。@Arun私が間違っている場合は修正してください!結果に関しては、関数はクラス、colnames、および ncol の自動テストにまだ合格しています。

いずれにせよ、Arun は setkey() がインタラクティブな使用を念頭に置いて作成されたと述べているため、関数やパッケージで使用するのは適切ではないようです。

有益なQAなど、CMD NOTESの「グローバル変数のバインディングが表示されない」には、他にもいくつかの提案があります。

私のggplot2構文が賢明な場合、R CMDチェック「グローバル変数の可視バインディングなし」ノートを処理するにはどうすればよいですか?

グローバル変数の可視バインディングなし R CMD チェックの注記

「目に見えるバインディングがありません...」の問題に関するスレッドは、1 つの問題として対処する傾向があります。そのソース (症状)、CMD チェックに基づいているようです。ただし、多くのアクションで同じフラグ (症状) が発生しているにもかかわらず、より深いところでは、異なるアクション (条件) によって生成される可能性があります。

Arun が指摘した、ここで使用されているソリューションが気に入っています。これは、この関数の使用の特定のケース (症状ではなく状態) に対処しているためです。上記のリンクで参照されている他のソリューションとは異なり、より一般的であるとしても、おそらく同等に正当です。
もちろん、このアプローチは、ノートの原因を正確に突き止め、別の方法を見つけることを意味します。

于 2015-08-28T05:55:16.640 に答える