如何检查字符串是否是使用R的Windows的有效文件名?

时间:2013-06-23 15:51:20

标签: windows r filenames

我一直在R中编写一个程序,为今年夏天我和其他几个人一起研究的项目输出随机化方案,除了一个功能外,我已经完成了大部分工作。我一直在做的部分是让它真正用户友好,这样程序就会提示用户提供某些信息,因此知道需要随机化的内容。我已将其设置为检查每个用户输入以确保它是有效输入,并且如果不是则给出错误消息/再次提示用户。我唯一不能弄清楚的是如何让它来检查.csv输出的文件名是否有效。有没有人知道是否有办法让R检查一个字符串是否有效的Windows文件名?谢谢!

1 个答案:

答案 0 :(得分:1)

不允许使用这些字符:/\:*?"<>|。因此警告用户是否包含任何内容。

其他一些名称也被禁止:COMAUXNULCOM1COM9LPT1至{{1} }。

您可能希望使用正则表达式检查文件名是否有效。请参阅另一个答案,了解一个Java示例,该示例应该在R中进行最少的调整。 https://stackoverflow.com/a/6804755/134830

您可能还需要检查文件名长度(260个字符以获得最大的可移植性,但某些系统允许使用更长的名称)。

最后,在R中,如果您尝试在不存在的目录中创建文件,它仍然会失败,因此您需要将名称拆分为文件名和目录名(使用LPT9basename)并尝试在必要时首先创建目录。

也就是说,David Heffernan在评论中给出了很好的建议,让Windows在决定是否可以创建文件时执行操作:您不想错误地告诉用户文件名无效。

你想要一些像这样的东西:

dirname

但首先要彻底测试!有各种各样的边缘情况可以解决问题:尝试使用UNC网络路径名“〜”和带有“。”的路径。和“..”在其中。