file () работает до тех пор, пока первый параметр (описание) является непустой строкой. Пример:
> myCon <- file("dumdum")
> isOpen(myCon)
[1] FALSE
Ключ в том, что второй параметр (открытый) остается пустым (по умолчанию). Не имеет значения, является ли строка, используемая для описания, существующим файлом или нет. Однако это не означает, что соединение не может быть использовано. R открывает соединение по мере необходимости. Например:
> myCon <- file("important log file.txt")
> isOpen(myCon)
[1] FALSE
> cat("Thinking this will fail, because the connection is closed. ...wrong!", file=myCon)
> isOpen(myCon)
[1] FALSE
Файл только что перезаписан этой одной строкой.
Безопасный способ установить резервное соединение - создать описание с помощью tempfile (). Это возвращает строку, которая гарантированно "не используется в настоящее время" (... согласно странице справки. Я понимаю, что это означает, что строка не является именем существующего файла.)
> myCon <- file( tempfile() )
> isOpen(myCon)
[1] FALSE
> cat("Didn't mean to do this, but all it will do is create a new file.", file=myCon)
> isOpen(myCon)
[1] FALSE
В данном случае эта строка была записана в файл, но она ничего не перезаписывала.
Большое спасибо Мартину Моргану за то, что он указал мне правильное направление. Я приветствую дополнительные комментарии.