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]消息令人恼火,我想制作完整的清单。为了避免截断,我需要调用哪个选项/标志/旋钮/配置/咒语?我有这样的印象,我曾经看到完整的列表,但现在看不到了——也许那是在不同的操作系统上(例如 Linux)。

我知道这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不会将它们打印出来供我们查看。

You can verify that this happens even on Windows by typing:

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::'

For more details about about the backend, and the functions and options that control its behavior, see ?rcompgen.

于 2012-05-06T01:04:18.370 回答