我正在尝试通过页面在 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 不再询问是否应打开该文件。如果有人可以确认就好了。任何提示都非常受欢迎。
write.csv(mtcars, file = 'a.csv'); file.show('~/a.csv')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
289 次 |
最近记录: |