Как удалить файл «Отказано в доступе» из папки в R - PullRequest
0 голосов
/ 17 января 2020

Я загружаю большой файл xlsx как часть функции. Этот файл удаляется с file.remove() в linux и ма c, но у меня отказано в разрешении на 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'.

Снова это предупреждение появляется только в windows.

Кроме того, после проверки свойств самого файла атрибут «Только для чтения» не проверяется.

После этого следующий код прекрасно работает, поэтому я не думаю, что проблема связана с папкой.

file.remove("miRTarBase.csv")

Я считаю, что проблема заключается в том, как обрабатываются файлы .xlsx в windows.

Когда я пытаюсь удалить файл .xlsx, когда Rstudio еще работает, я получаю предупреждение об использовании файла. После закрытия сеанса R файл .xlsx может быть удален без проблем.

Это смутило меня, потому что я не привык работать с windows. У кого-нибудь была эта проблема раньше? Буду признателен за любую помощь, которая может быть оказана. Большое спасибо.

1 Ответ

1 голос
/ 17 января 2020

Вы пытались сохранить как временный файл в 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)
...