2012-11-30 76 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」:沒有這樣的文件或目錄 我不知道我在做什麼錯在這裏.... –