【发布时间】:2020-08-06 08:10:47
【问题描述】:
自从我昨天更新了 RStudio,我无法让 Rstudio 放弃它对我的 excelfiles 的保留。
我尝试了以下方法无济于事:
unlink(fileName, recursive = TRUE)
file.info(fileName)
file.remove(fileName)
file.info 给出以下内容:
size 2383465
isdir FALSE
mode 666
mtime 2020-08-06 11:02:03
ctime 2020-06-16 13:00:22
atime 2020-08-06 10:40:30
exe no
RStudio 由管理员安装,但我个人在我的组织中没有管理员权限。 file.remove 即使取消链接也是不允许的(但它不是一个目录,所以......)。而且我真的不想删除它,只是让 Rstudio 放弃保留。该文件将在 Excel 中修改(并保存,这是不允许的,因为 RStudio 拥有它)。
更新:
我想这是一个错误,所以到目前为止我所有的谷歌搜索都没有找到解决方案。我想可以解决这个问题的一种解决方法是,如果我可以以编程方式重新初始化 JVM 实例。 (例如,.rs.restartR() 删除文件中的 R:s 保留)
更新 2:
openxlsx-package 也发生了完全相同的错误,它不依赖于 Java,因此问题可能出在 R 上。
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)
Matrix products: default
locale:
[1] LC_COLLATE=Swedish_Finland.1252 LC_CTYPE=Swedish_Finland.1252 LC_MONETARY=Swedish_Finland.1252
[4] LC_NUMERIC=C LC_TIME=Swedish_Finland.1252
更新 3:
这里仍然没有突破,我已经用一些hacky代码解决了锁,但它至少解决了眼前的问题:
.rs.restartR()
source("~/.Rprofile")
更新 4:
如果我这样做:
library(XLConnect)
wb <- loadWorkbook("Cars.xlsx", create = TRUE)
createSheet(wb, "Data")
writeWorksheet(wb, cars, "Data")
saveWorkbook(wb)
第一次打开文件时,我可以在不关闭 R-session 的情况下保存。如果我这样做,打开 Excel 文件并保存,然后重新运行上面的代码,我的 R-session 持有权限锁。所以它在文件保存的范围内有一些东西。
更新 5:
现在这是一个未解决的问题,可能是仅限 Windows 的错误:
【问题讨论】:
-
R 没有运行时有问题吗?如果是这种情况,则表明它不是与 R 相关的问题。如果是,则应通过在关闭 R 时不保存环境并删除现有的
.Rhistory和.Rprofile文件来解决问题。 -
@Oliver 如果我关闭/重新启动 R 会话,则权限保持被删除,是的。因此,只要打开并保存文件的 R 会话与工作簿有某种连接,我就会遇到问题。这种情况发生在我们升级了 R-studio 和 R 之后。恢复到以前的版本并没有帮助。我不是在拯救环境,所以每次都是一个干净的开始。删除 .Rprofile 听起来像一个真正的痛苦,几乎比疾病更糟糕:p
-
应该没有必要连续删除。似乎您在会话期间的某个时刻打开了连接,并在此特定时间保存了环境(或自动打开连接的对象)。我的建议只是删除
.Rhistory和.Rprofile以清除此变量,并小心避免将来出现同样的情况。 :-) -
@我尝试过,但不幸的是它没有帮助。我猜这可能与 Java 对象的底层或权限有关。 R 可能是原因,但也可能与 excel 有关。由于谷歌搜索时在纯 Windows/excel 设置中存在类似问题