ライブラリが関数をマスクするのを防ぐにはどうすればよいですか?質問する

ライブラリが関数をマスクするのを防ぐにはどうすればよいですか?質問する

典型的な状況は次のとおりです。

library(dplyr)
library(xgboost)

ライブラリ をインポートすると、のxgboost関数がマスクされ、明示的に使用していない場合でも を記述する必要があります。slicedplyrdplyr::slicexgboost::slice

この問題の明らかな解決策は、xgboostbeforeをインポートすることです。しかし、 の機能に影響を与える可能性のあるすべてのライブラリを事前にdplyrインポートするのは無謀です。さらに、この問題はライブラリを使用するときによく発生します。つまり、関数は必要なライブラリを自動的にインポートし、一部の関数はその時点でマスクされます。dplyrcarettrain

  1. 一部の機能がマスクされないようにすることは可能ですか?
  2. 「マスキング関数」(例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()。これは好ましくありません。

おすすめ記事