r - 如何检查文件名在R中是否可写?

标签 r file

如何检查是否可以写入特定文件名?理想情况下,我想要一个与 file.exists() 以相同方式工作的函数 - 它返回 TRUE 或 FALSE,并且在测试时不会吐出任何错误。

理想的例子:

filename = "X:/an/invalid/path"
file.writable(filename) # returns FALSE

我还没有找到一个已经这样做的函数,也无法真正考虑如何去做。

一种想法是尝试将一些垃圾数据写入 filename ,但我无法弄清楚使用 try() 的复杂性或 tryCatch()以避免出现大量错误消息。这也有覆盖文件名的缺点,您可能不希望发生这种情况。

最佳答案

编辑

查看@Marek 建议的函数后,发现已经有一个函数可以在名为 file.access 的基数中执行此操作。 .如果您阅读警告,他们会讨论@KonradRudolph 在评论中提到的问题(即文件访问可以更改)。

所以,你需要做的就是

## Mode 2 for write permission
file.access(filename, mode=2)  # 0 success / -1 failure

执行您的建议(正如@NickK 指出的那样,这将覆盖文件!)
file.writable <- function(fname)
    tryCatch({
        suppressWarnings(write.table(1, fname))
    }, error=function(e) FALSE)

filename = "X:/an/invalid/path"
file.writable(filename)
# [1] FALSE

关于r - 如何检查文件名在R中是否可写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212723/

相关文章:

c++ - 根据 roll no.s 将 intime/outtime 存储在一个文件中

c - 如何解决C中读取/写入二进制文件时的段错误

java - 替换文件中的某些行

r - 如何将数据框中的所有数字字符串转换为 R 中的数字?

r - cforest 打印空树

关于 R 中的 data() 函数

jquery - Safari 输入 ='file' 不起作用

python - Python 中 R 的 read.table 等价物

r - 根据条件更改变量值

C编程打印一定数量的字节到屏幕