list.files()没有找到文件夹中的所有文件

时间:2014-09-10 12:11:53

标签: r excel

我正在尝试将一些“.xls”加载到R.该文件夹包含8个.XLS文件和8个.csv文件,我通过手动打开.xls文件并保存为.csv。我意识到我可以使用read.xls()包中的gdata直接加载.xls文件,这有助于以.xls格式接收数据。然而,当我在3个最新的.xls文件中使用list.files()时,错过了列表。然而,他们的相关.csv包括在内。如果我打开文件并将它们转换为.xls然后再次运行list.files(),如果我在资源管理器中重命名它们,当我再次运行list.files时它们将不会显示。 Excel文件可能来自不同地区的Excel版本,因为它们来自不同国家的办公室,但我不认为这会产生影响。

这些文件通过电子邮件发送给我,因此我在实验中创建了一个新文件夹,并将文件从Outlook保存到新文件夹,我运行list.files()时的结果是相同的,当我转换它们时也是如此。

list.files(getwd())

返回

character(0)  

如果我使用list.files( getwd() )或指定文件扩展名,则没有区别。

我想知道我错过了什么,这样我就可以避免在我运行脚本时单独打开每个文件或冒失踪文件的风险。

对这个问题抱歉不可重现。

修改

根据Jbaum的建议,运行以下代码并返回结果

shell(sprintf('dir /b %s', normalizePath(getwd())), intern=TRUE)
[1] "'\\\\\\ **File path**'"
[2] "CMD.EXE was started with the above path as the current directory."                             
[3] "UNC paths are not supported.  Defaulting to Windows directory."                                
[4] "The system cannot find the file specified."
attr(,"status")
[1] 1
Warning message:
running command 'C:\WINDOWS\system32\cmd.exe /c dir /b \\\\ **File path**' had status 1

注意:我已经用**文件路径**替换了文件路径,并将反斜杠的数量增加了一倍,因此它们显示为R

2 个答案:

答案 0 :(得分:0)

问题与公司PC的网络同步有关,而与R无关。

我使用的系统将所有文件从PC的C驱动器同步到网络驱动器,所有程序的默认设置是在PC连接到网络时查看网络驱动器上的文件。

然而,当我从outlook传输文件时,它们存储在文件夹的本地实例上而没有网络实例,使得它们对于查看网络实例的R是不可见的。

当我使用Excel转换文件时,新文件默认保存到网络中,允许R在系统完成同步过程时看到它们。所有文件最终都可由R访问。

将来避免此问题的一种方法是,如果文件不可见,请进行手动同步以检查这不是问题。

答案 1 :(得分:0)

我有同样的问题。我有20个文件,分别为: file_1,file_2,... file_20

list.files(".", pattern, recursive=T, full.names=T, all.files=T)

没有列出所有20个文件,缺少了一些文件。

我尝试使用正则表达式,并且列出了所有文件,这是我的工作方式:

list.files(".", "file_+[0-9]", recursive=T, full.names=T, all.files=T)