list.files()找不到文件夹中的所有文件
我想将一些“.xls”加载到R.该文件夹包含8个.XLS文件和8个.csv文件,我通过手动打开.xls文件并保存为.csv。我意识到我可以使用gdata
包中的read.xls()
直接加载.xls文件,这对于以.xls格式接收数据很有帮助。但是,当我在3个最新的.xls文件中使用list.files()
时,它们被错过了列表。然而,它们的相关.csv包含在内。如果我打开文件并将它们转换为.xls,然后再次运行list.files()
,它们将显示出来,如果我在资源管理器中重命名它们,当我再次运行list.files
时它们不会显示。 Excel文件可能来自不同地区的Excel版本,因为它们来自不同国家的办公室,但我不认为这会产生效果。list.files()找不到文件夹中的所有文件
这些文件通过电子邮件发送给我,因此我创建了一个新文件夹并将文件从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
问题在于与企业PC的网络同步,而不是实际与R相关。
我正在使用的系统将所有文件从PC的C驱动器同步到网络驱动器,所有程序的默认设置是在PC连接到网络时查看网络驱动器上的文件。
但是,当我从Outlook传输文件时,它们被存储在文件夹的本地实例中,而没有联网,使得它们看不到网络实例。
当我转换使用Excel的新文件,这些文件是默认保存到网络上,让他们由R.可以看出,当系统通过同步过程中去的所有文件终于通过访问R.
一在将来避免此问题的方法是在文件不可见的情况下进行手动同步以检查这不是问题。
你是否正确? 'getwd'是否会返回预期的路径? – Roland 2014-09-10 12:16:39
是的,getwd返回预期的路径。重要的是要记住files.list返回**一些**但不是所有文件,并且当文件被转换时它们会被列出,如果路径不正确,则不会发生这种情况。 – 2014-09-10 12:22:54
'list.files(all.files = TRUE)'的结果是什么? – jbaums 2014-09-10 12:39:58