我想讀取多個文件。要做到這一點我使用一個通用的功能read_list
將一些設置參數的read.csv分配給一個名稱,以便將它傳遞給函數
read_list(file_list, read_fun)
的說法read_fun
分配不同的讀取功能,我可以閱讀csv
文件,read_dta
爲STATA文件等
閱讀不同類型的文件,即read.csv
的現在,我需要閱讀一些csv
文件,其中前四行需要跳過。因此,我不想將read.csv
作爲參數傳遞給read_list
,我想通過read.csv
並將skip
參數設置爲4.是否可以在R中執行此操作?我試過
my_read_csv <- function(...){
read.csv(skip = 4, ...)
}
這似乎工作,但我想確認這是正確的方式來做到這一點。我認爲R中的函數是對象是一個奇妙而強大的語言功能,但我對R閉包和範圍規則並不是很熟悉,因此我不想無意中犯下一些重大錯誤。
你的建議很有趣,但我不知道這是一般。我的意思是,如果我想傳遞不同於'skip'的參數,是否需要修改'read_list'代碼?如果是這樣,那麼響應是不可接受的:在每次需要設置不同的參數時,將read.csv包裝在不同的'my_read_csv'函數中顯然比每次修改'read_list'更具本地性。否則,您的解決方案是最佳的。我會測試它並讓你知道。 – DeltaIV
@DeltaIV不,你沒有。您可以將任何參數傳遞給底層函數。 – AlexR
關於'read_list'的結構,當然它包含'lapply',但它的優越性在於它允許我爲每個數據集分配一個名稱,從文件名派生。這是非常有用的,因爲在我的應用程序中,文件名包含有用的信息,然後在另一個「merge_list」函數的'do.call'步驟之前解析。如果您想查看代碼,我的實現與[this]非常相似(http://www.brodrigues.co/2016/07/26/read-a-lot-of-datasets-at-once -with-r),但有一些細微的差別(與我的特定應用程序有關的調整)。 – DeltaIV