我正在尝试将R中的数据导出到csv文件,尽管我尝试这么简单,但我总是得到相同的错误消息。例如:
我创建一个简单的数据向量来导出
x <- c(1,3,4,3,5,7,5,8,2,5,7)
我尝试导出:
write.csv(x,file='whatever.csv')
我收到错误:
error in file(file ifelse (append a w )) cannot open the connection
In addition: Warning message: In file(file, ifelse(append, "a", "w")) :
cannot open file 'whatever.csv': Permission denied
我该如何解决这个问题?
答案 0 :(得分:17)
第一部分是检查工作目录并确保您具有该目录的写入权限。您可以使用getwd()
进行检查。我可以通过尝试写入只读目录来重现您的错误。
要将工作目录设置为具有读取权限的其他内容,您可以键入setwd("H:/foo")
。
获得写入权限后,write.csv(x,file='whatever.csv')
应该有效。
答案 1 :(得分:0)
我今天收到此错误并通过授予每个人对该文件夹的写入权限来修复它。
步骤:在PC上找到该文件夹,右键单击并选择属性,查找“安全”选项卡,然后编辑所有权限以包含“写入”
答案 2 :(得分:0)
如果您未指定文件名(即C:/temp.csv)而仅提供文件路径,则write.csv和write_csv都会弹出此错误。
答案 3 :(得分:0)
我今天遇到了同样的问题,我知道我对该文件夹拥有完全许可。对我有用的是给它绝对的路径。
write.csv(data, file="C:/project/file.csv")
答案 4 :(得分:0)
我今天收到此错误,因为我尝试重写的文件已在另一个程序中打开。我关闭它后,问题解决了。
答案 5 :(得分:0)
相关:我试图将csv保存到相对路径中,即我在Windows中建立了增量存储,但就我而言,问题实际上不是错误,而是我的误解-在以下代码中:< / p>
library(dplyr)
library(hflights)
path_to_hflights_as_csv <-
file.path(path.expand("~/MyHomeSubDir"),
"hflights.csv")
write.csv(hflights, path_to_hflights_as_csv)
path.expand("~/MyHomeSubDir")
映射到"C:/Users/my.username/Documents/MyHomeSubDir"
而不是"C:/Users/my.username/MyHomeSubDir"
。
在安装R时搜索是否有错误的配置,发现各种Windows版本中的“ home dir”确实是"C:/Users/my.username/Documents/"
(而不是"C:/Users/my.username"
):
并且当您传递包含utils::csv.write
不存在的子目录的路径时,错误类似(仅打开文件的原因不同-cannot open file 'C:/Users/my.username/MyHomeSubDir/hflights.csv': No such file or directory
)。
答案 6 :(得分:0)
如果以前(没有问题)已导出文件,但现在出现错误,请确保该文件未打开。以我为例,当我尝试再次导出错误时,我意识到第一个文件已打开。您可以更改要导出的文件的名称,也可以关闭打开的文件的名称。
答案 7 :(得分:-2)
我在试图弄清楚这个问题时偶然发现了这个问题。我有几次弹出完全相同的错误信息:
Error in file(file, ifelse(append, "a", "w")) :
cannot open the connection
在搜索并找到对我有用的任何内容后,我重新启动了R并收到了相同的消息,但也出现了新的错误:
In addition: Warning message:
In file(file, ifelse(append, "a", "w")) :
cannot open file 'censoredpath.file.csv': Permission denied
我去了我的文件资源管理器并尝试在Excel中打开.csv,它通知我它已被另一个用户锁定(其他人在他们的计算机上打开了该文件)。因此,如果访问目录不像已经建议的那样存在问题,请尝试在Excel中打开它以查看是否存在问题。
答案 8 :(得分:-3)
如果您的工作目录中已有一个具有相同名称的文件,则会出现该错误。
答案 9 :(得分:-4)
请检查您的代码是否包含任何变量名称,逻辑T或F(TRUE或FALSE)。如果你有,你不能将逻辑值缩短为T或F.