r - 使R的View()自动在新窗口中打开

标签 r rstudio viewer

我喜欢使用R中View()调用的源代码编辑器/数据查看器。我使用多个监视器,当我在RStudio主窗口中编写代码时,在一个侧面监视器上打开一个或两个查看器非常好。如果要查看多个数据框,必须先执行View(df),然后为要查看的每个数据框单击“在新窗口中显示”按钮,这有点不方便。

我想知道是否可以将某种包装 Material 放在一起,或者将某些设置藏在某个地方,这样可以做到,所以当我调用View()时,查看器会自动在新窗口中打开。有任何想法吗?

最佳答案

您可以考虑覆盖查看器选项。

options(viewer = function(url, height = NULL)
{
  if (!is.character(url) || (length(url) != 1))
    stop("url must be a single element character vector.", call. = FALSE)

  if (identical(height, "maximize"))
    height <- -1

  if (!is.null(height) && (!is.numeric(height) || (length(height) != 1)))
    stop("height must be a single element numeric vector or 'maximize'.", call. = FALSE)

  invisible(.Call("rs_showPageViewer", url, title = "RStudio", self_contained = FALSE))  
})

说明:

查看器选项的代码可以在这里找到:https://github.com/rstudio/rstudio/blob/master/src/cpp/r/R/Options.R

所需的功能(在新窗口中打开)是page_viewer,请参见此处:
https://github.com/rstudio/rstudio/blob/779baf9ceb99b6d2455345bcbae3c4e57e164425/src/cpp/r/R/Options.R#L45

当前的默认行为是打开viewer而不是page_viewerviewer选项的代码在这里https://github.com/rstudio/rstudio/blob/779baf9ceb99b6d2455345bcbae3c4e57e164425/src/cpp/r/R/Options.R#L28

这有点hacky,但是您可以覆盖viewer选项并让它打开一个新窗口,而不是在查看器 Pane 中显示内容,请参见上面的代码片段。

将其集成到您的工作流程中:

(请注意,运行上面的代码只会在当前 session 期间产生所需的功能。每次启动新 session 时都运行它会花费很多精力)。
  • 如果您确定不再希望使用查看器 Pane ,则可以考虑使用上面的代码,并将其放在.RProfile Locate the ".Rprofile" file generating default options中。我还没有找到解决方法,因为“rs_showPageViewer”不是基本 namespace 的方法(?)。不确定如何引用该方法,... [如果需要此选项,可以进行编辑]。
  • 编写一个小插件。不利的一面是为此引入额外的插件是一种矫kill过正的做法。好处是,您可以在一个 session 期间通过单击/键盘快捷键在两个选项(窗口与 Pane )之间进行切换。

  • 插件:

    我将其上传到我的github:https://github.com/Timag/viewerWindow

    按照devtools::install_github('Timag/viewerWindow')安装。

    然后选择插件
  • ViewerWindow:从现在开始在新窗口中打开所有查看器。
  • ViewerPane:从现在开始在新 Pane 中打开所有查看器。

  • 或为其分配键盘快捷键。

    enter image description here

    编辑11.2019:

    (此小技巧可能不再起作用-参见https://github.com/Timag/viewerWindow/issues/1)

    关于r - 使R的View()自动在新窗口中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49062761/

    相关文章:

    r - 使用 %>% 管道和点 (.) 表示法

    r - 将嵌套列表(不等长)转换为数据框

    r - 防止在 R Notebook 交互中进行 block 评估

    javascript - 如何使用 JavaScript 在点击时更改图像?

    javascript - 如何在 html 中将 JSON 显示为格式化 View

    R Shiny 模块 - 无法将类型 'closure' 强制转换为字符类型的向量

    R 带日期的 Shiny 表

    Rmarkdown 将输出文件定向到目录中

    r - 未从自制包加载的功能

    Flash PDF 查看器(有自己的主机)