我有一段代码,它从文件夹中读取具有特定扩展名的所有文件,每个数据集都保存为具有默认名称的数据框。代码工作正常,直到我把它变成一个函数。该函数运行正常,但没有返回任何东西。我想询问是否有办法让这个函数返回所有数据框?
功能如下:
library(devtools); install_github(BioStatMatt/sas7bdat.parso)
ReadFiles <- function()
{
path <- "C:/Users/abc/Desktop/abc/test/"
files <- list.files(path=path, pattern="*.sas7bdat")
for(file in files)
{
perpos <- which(strsplit(file, "")[[1]]==".")
assign(
gsub(" ","",substr(file, 1, perpos-1)),
read.sas7bdat.parso(paste(path,file,sep="")))
}
}
我将非常感谢如何使这项功能发挥作用。
感谢。
答案 0 :(得分:6)
你的功能确实没有返回任何东西。要解决此问题,您可以将在for循环中生成的数据帧保存在列表中,然后返回包含所有数据帧的结果列表。
从概念上讲,它看起来像这样:
ReadFiles <- function()
{
files <- # fetch the files
resultList <- vector("list",length(files))
for(i in seq(1,length(files))) # process each file
{
file <- files[i]
resultList[[i]] <- # fetch your data(frame)
}
resultList # Return the result!
}
results <- readFiles()
# You can now access your individual dataframes like this:
dataFrame1 <- results[[1]]
# Or merge them all together if you like:
combinedDataFrame <- do.call("rbind",results)