我正在下载一个大的xlsx文件作为函数的一部分。这个文件在linux和mac上是用file.remove()
删除的,但在windows机器上我的权限被拒绝了。下面是我的函数的代码。
download.file(
'http://mirtarbase.mbc.nctu.edu.tw/cache/download/7.0/miRTarBase_MTI.xlsx',
'miRTarBase.xlsx', mode = "wb")
readxl::read_excel('miRTarBase.xlsx') -> miRTarBase
write.csv(miRTarBase, 'miRTarBase.csv')
read.csv('miRTarBase.csv', row.names = 1) -> miRTarBase
file.remove("miRTarBase.xlsx")
我在控制台中收到以下错误消息
Warning message:
In file.remove("miRTarBase.xlsx") :
cannot remove file 'miRTarBase.xlsx', reason 'Permission denied'.
同样,此警告仅出现在窗口中。
此外,在检查文件本身的属性之后,将取消选中“只读”属性。
接下来,下面的代码运行得很好,所以我也不认为问题出在文件夹上。
file.remove("miRTarBase.csv")
我认为问题出在windows对.xlsx文件的处理方式上。
当我在Rstudio仍在运行的情况下尝试删除.xlsx文件时,我收到一条file in use警告消息。在关闭R会话之后,可以毫不费力地删除.xlsx文件。
这让我感到困惑,因为我不习惯使用windows。以前有没有人遇到过这个问题?如能给予任何帮助,我将不胜感激。非常感谢。
发布于 2020-01-17 20:33:37
你有没有试过在windows中另存为临时文件?
tmp <- tempfile()
download.file(
'http://mirtarbase.mbc.nctu.edu.tw/cache/download/7.0/miRTarBase_MTI.xlsx', tmp, mode = "wb")
readxl::read_excel(tmp) -> miRTarBase
write.csv(miRTarBase, 'miRTarBase.csv')
read.csv('miRTarBase.csv', row.names = 1) -> miRTarBase
file.remove(tmp)
https://stackoverflow.com/questions/59786979
复制相似问题