典型的な状況は次のとおりです。
library(dplyr)
library(xgboost)
ライブラリ をインポートすると、のxgboost
関数がマスクされ、明示的に使用していない場合でも を記述する必要があります。slice
dplyr
dplyr::slice
xgboost::slice
この問題の明らかな解決策は、xgboost
beforeをインポートすることです。しかし、 の機能に影響を与える可能性のあるすべてのライブラリを事前にdplyr
インポートするのは無謀です。さらに、この問題はライブラリを使用するときによく発生します。つまり、関数は必要なライブラリを自動的にインポートし、一部の関数はその時点でマスクされます。dplyr
caret
train
- 一部の機能がマスクされないようにすることは可能ですか?
- 「マスキング関数」(例
xgboost::slice
)を早期にインポートされた関数(例dplyr::slice
)でマスクすることは可能ですか?
ノート
- 私は警告メッセージを無効にする方法を尋ねているのではありません。
- 私はマスクされた関数の使用方法を尋ねるのではありません。
ベストアンサー1
Rの次のバージョンではNEWS{.Rd}ファイル内のこれNEWS
(ビルド後のファイルから引用):
• The import() namespace directive now accepts an argument except
which names symbols to exclude from the imports. The except
expression should evaluate to a character vector (after
substituting symbols for strings). See Writing R Extensions.
マニュアルから参照されているテキストはこちら(生のtexi形式)。
すぐにできるようになります。現時点ではそれができず、特に Base R パッケージの関数がマスクされている場合、非常に面倒です: lag()
、、filter()
...
私たちは、反社会的過去のこの行為に対して。あまり強いとは思いません。
この問題を説明するために、私が 10 年前に書いたコードの一部を示します (現在は消滅した R グラフ ギャラリーに投稿していました)。このコードでは、移動平均を計算するための巧妙で高速な方法が使用されています。
## create a (normalised, but that's just candy) weight vector
weights <- rep(1/ndays, ndays)
## and apply it as a one-sided moving average calculations, see help(filter)
bbmiddle <- as.vector(filter(dat$Close, weights,
method="convolution", side=1))
対話型セッションと同じように行うとlibrary(dplyr)
、まったく異なる状況に陥って行き詰まってしまいますfilter()
。これは好ましくありません。