2016-03-04 45 views
1

我想要合并的目录中有几个文件。我正在使用lapply。这是一个重复的任务,我想为它写一个函数,并将该目录作为参数传递。然而,我这样做并没有发生。如果我将它作为函数传递而不传递,则此方法起作用。尝试将目录作为参数传递

代码,而功能:

directory="S:/monthly/Jan" 
list<-list.files(path=directory,full.names=T) 
list 
data<-lapply(list, read.table, sep="|", header=T) 

随着功能:

function_data_combined<-function(directory) 
{ 
list<-list.files(path=directory,full.names=T) 
list 
data<-lapply(list, read.table, sep="|", header=T) 
} 
function_data_combined("S:/monthly/Jan") 

该函数不抛出任何错误,它只是不创建列表。

+0

你错过了返回命令。在这一切结束时,Y不这样做'回报(数据)'在关闭函数循环(})之前执行 – MaxPD

回答

1

添加return(data)到您的代码(最后,关闭功能(})

function_data_combined <- function(directory) 
{ 
    mylist <- list.files(path = directory, full.names = TRUE) 
    lapply(mylist, read.table, sep = "|", header = TRUE) 
    # Or we can be explicit 
    # res <- lapply(mylist, read.table, sep = "|", header = TRUE) 
    # return(res) 
} 

#run function 
myData <- function_data_combined("S:/monthly/Jan")