R:如何禁用截断包函数列表?

时间:2012-05-06 00:21:44

标签: r

如何列出键入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")是一种有用的方法,但它与设置选项不同,列表也不同。

1 个答案:

答案 0 :(得分:9)

不幸的是,在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