2012-11-30 53 views
1

有没有办法将文件读入R,我不知道完整的文件名。就像是。将文件读入部分未知文件名的R中

read.csv("abc_*") 

在这种情况下,我不知道以后abc_

+0

如果有多个文件满足您的标准,您希望发生什么? – Thilo

+0

@Thilo:只有一个以abc开头的文件。因此,我会给出初始abc,然后想要使用一些搜索条件,例如* –

回答

5

完整的文件名,如果你恰好有一个文件符合您的条件,你可以做这样的:

read.csv(dir(pattern='^abc_')[1]) 

如果有不止一个文件,这种方法只会使用第一个命中。在更详细的版本中,您可以遍历所有匹配并将它们附加到一个数据框或类似的东西。

请注意,该模式使用正则表达式,因此是有点不同于你所期望的(以及我错误地认为在我的第一个镜头回答这个问题)。详情可使用?regex


发现如果您想要提交的目录,你已经做相应修改dir命令:

read.csv(dir('path/to/your/file', full.names=T, pattern="^abc")) 

你的情况提交的路径可能是c:\\users\\user\\desktop和然后如上图。 full.names=T强制dir()输出一个完整的路径,而不仅仅是文件名。尝试运行dir(...),而不要使用read.csv来了解发生了什么。


如果你想给你的路径作为一个完整的字符串,它再次变得有点复杂:

filepath <- 'path/to/your/file/abc_' 
read.csv(dir(dirname(filepath), full.names=T, pattern=paste("^", basename(filepath), sep=''))) 

,如果你的文件名包含任何正则表达式关键字过程将失败。您将不得不先用其相应的转义序列替换。但这又是另一个话题。

+1

请注意,“abc _ *”与abc_(通配符)不匹配,而是“abc(零次或多次_)”。因此它也会匹配'abc.txt'或类似的东西。 –

+0

傻了。你当然是对的。适当地编辑我的答案。 – Thilo

+0

我试过上面的语法。但我得到一个错误。 错误文件(文件,“rt”):无法打开连接(文件名为“rt”):错误文件(文件,“rt”): 另外:警告消息: 在文件(文件,“RT”):无法打开文件“NA”:没有这样的文件或目录 我不知道我在做什么错在这里.... –