我想读取多个文件。要做到这一点我使用一个通用的功能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