9

packageName<tab>を入力したときに発生していたすべての結果、つまりオートコンプリートによって提供される完全なリストを一覧表示するにはどうすればよいですか? R 2.15.0 では、次のようになりますMatrix::<tab>

> library(Matrix)
> Matrix::
Matrix::.__C__abIndex               Matrix::.__C__atomicVector          Matrix::.__C__BunchKaufman          Matrix::.__C__CHMfactor             Matrix::.__C__CHMsimpl              
Matrix::.__C__CHMsuper              Matrix::.__C__Cholesky              Matrix::.__C__CholeskyFactorization Matrix::.__C__compMatrix            Matrix::.__C__corMatrix             
Matrix::.__C__CsparseMatrix         Matrix::.__C__dCHMsimpl             Matrix::.__C__dCHMsuper             Matrix::.__C__ddenseMatrix          Matrix::.__C__ddiMatrix             
Matrix::.__C__denseLU               Matrix::.__C__denseMatrix           Matrix::.__C__dgCMatrix             Matrix::.__C__dgeMatrix             Matrix::.__C__dgRMatrix             
Matrix::.__C__dgTMatrix             Matrix::.__C__diagonalMatrix        Matrix::.__C__dMatrix               Matrix::.__C__dpoMatrix             Matrix::.__C__dppMatrix             
Matrix::.__C__dsCMatrix             Matrix::.__C__dsparseMatrix         Matrix::.__C__dsparseVector         Matrix::.__C__dspMatrix             Matrix::.__C__dsRMatrix             
Matrix::.__C__dsTMatrix             Matrix::.__C__dsyMatrix             Matrix::.__C__dtCMatrix             Matrix::.__C__dtpMatrix             Matrix::.__C__dtrMatrix             
Matrix::.__C__dtRMatrix             Matrix::.__C__dtTMatrix             Matrix::.__C__generalMatrix         Matrix::.__C__iMatrix               Matrix::.__C__index                 
Matrix::.__C__isparseVector         Matrix::.__C__ldenseMatrix          Matrix::.__C__ldiMatrix             Matrix::.__C__lgCMatrix             Matrix::.__C__lgeMatrix             
Matrix::.__C__lgRMatrix             Matrix::.__C__lgTMatrix             Matrix::.__C__lMatrix               Matrix::.__C__lsCMatrix             Matrix::.__C__lsparseMatrix         

[...truncated]

その[...truncated]メッセージはイライラするので、完全なリストを作成したいと思います. 切り捨てを回避するには、どのオプション/フラグ/ノブ/構成/呪文を呼び出す必要がありますか? 以前は完全なリストを表示していた印象がありますが、現在は表示されていません。おそらく、別の OS (Linux など) を使用していたのでしょう。

これが便利なアプローチの 1 つであることは知っていls("package:Matrix")ますが、オプションを設定することと同じではなく、リストも異なります。

4

1 に答える 1

10

残念ながら、Windows では、この動作はCコンソールの構築に使用されるコードに組み込まれているようです。したがって、答えは「いいえ、無効にすることはできません」(少なくともソースを変更してからRを最初から再コンパイルしない限り)ということのようです。

からの関連行は次の$RHOME/src/gnuwin32/console.cとおりです。

909 static void performCompletion(control c)
910 {
911    ConsoleData p = getdata(c);
912    int i, alen, alen2, max_show = 10, cursor_position = p->c - prompt_wid;
    ...
    ...
1001      if (alen > max_show)
1002      consolewrites(c, "\n[...truncated]\n");

他の一部のプラットフォームでは、すべての結果が出力されることは間違いありません。(たとえば、私はよく Emacs を使用しますが、タブ補完のすべての結果を別のバッファーに表示します)。

興味深いことに、rcompgen(結果をコンソールに出力するのではなく) タブ補完を実際に実行するバックエンドは、常にすべての補完を見つけます。Windows がそれらを印刷して表示しないだけです。

次のように入力して、Windows でもこれが発生することを確認できます。

library(Matrix)
Matrix::
## Then type <TAB> <TAB>
## Then type <RET>
rc.status()      ## Careful not to use tab-completion to complete rc.status !
matches <- rc.status()$comps
length(matches)  # -> 288
matches          # -> lots of symbols starting with 'Matrix::'

バックエンド、およびその動作を制御する関数とオプションの詳細については、 を参照してください?rcompgen

于 2012-05-06T01:04:18.370 に答える