R中的页面函数

Use*_*239 4 windows r rstudio

我正在尝试通过页面在 R 中打印简单的输出,当前在 Windows 10 计算机上。过去它有效,现在不再有效。Windows通常会询问应该使用哪个程序打开该文件,但现在不再弹出窗口了。其他人也遇到这些问题,或者知道如何解决吗?可能与最新的大型 Windows 更新有关,但不一定如此。我使用 Rstudio 作为 IDE。

例子:

x <- data.frame(matrix(1:9,3,3))
page(x,method="print") # no effect
Run Code Online (Sandbox Code Playgroud)

Windows 10(家庭版),版本:10.0.18362 Build 18362。同时,将RStudio更新到最新版本1.2.1335(64位),R也更新到最新版本3.6.1(64位)。问题仍然出现。

编辑:使用 Windows 7 机器进行测试,Rstudio 最新版本 1.2.1335(64 位)。在这里工作得很好。问题似乎与 Windows 10 有关。

Edit2:使用不同的Windows 10(企业版)机器进行测试,版本:10.0.14393 Build 14393。这里工作正常。问题似乎与最新版本的 Windows 10 和/或家庭版与企业版有关。

有人提到实现依赖于系统。下面是 Windows 的实现:

page <-
function (x, method = c("dput", "print"), ...) 
{
  local.file.show <- function(file, title = subx, delete.file = TRUE, 
                              pager = getOption("pager"), ...) file.show(file, 
                                                                         title = title, delete.file = delete.file, pager = pager)
  local.dput <- function(x, file, title, delete.file, pager, 
                         ...) dput(x, file, ...)
  local.print <- function(x, title, delete.file, pager, ...) print(x, 
                                                                   ...)
  if (is.character(x) && length(x) == 1L) {
    subx <- x
    parent <- parent.frame()
    if (exists(subx, envir = parent)) 
      x <- get(subx, envir = parent)
    else stop(gettextf("no object named '%s' to show", 
                       x), domain = NA)
  }
  else {
    subx <- deparse(substitute(x))
  }
  file <- tempfile("Rpage.")
  if (match.arg(method) == "dput") 
    local.dput(x, file, ...)
  else {
    sink(file)
    local.print(x, ...)
    sink()
  }
  local.file.show(file, ...)
}
Run Code Online (Sandbox Code Playgroud)

尝试通过逐行执行上述代码来跟踪错误,我发现该文件已在 Local/Temp 文件夹中正确创建,但该函数的其余代码没有返回结果(测试了所有不同的方式)。更具体地说,file.show("C:\\Users\\XYZ\\AppData\\Local\\Temp\\RtmpOmW06C\\Rpage.1d0562862a6")就是没有任何效果。该命令file.show适用于其他路径。我还发现,一旦我手动打开文件,我也可以在 RStudio 中成功使用该命令。所以不存在授权错误;相反,如果文件类型未知,Windows 不再询问是否应打开该文件。如果有人可以确认就好了。任何提示都非常受欢迎。

Mon*_*onk 5

write.csv(mtcars, file = 'a.csv'); file.show('~/a.csv')
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,效果很好。问题是,这对我来说只是一个解决方法,因为我不想每次都将文件存储在我的硬盘上只是为了显示它们。尽管如此,我还是对你的努力表示支持。 (2认同)
  • @Talik3233 在它后面加上 `file.remove('a.csv')` 怎么样,或者您根本不想存储它? (2认同)