保存多个数据框并从函数返回它们

时间:2015-07-06 00:33:10

标签: r function

我有一段代码,它从文件夹中读取具有特定扩展名的所有文件,每个数据集都保存为具有默认名称的数据框。代码工作正常,直到我把它变成一个函数。该函数运行正常,但没有返回任何东西。我想询问是否有办法让这个函数返回所有数据框?

功能如下:

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="")))
      }
  }

我将非常感谢如何使这项功能发挥作用。

感谢。

1 个答案:

答案 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)