我有一段代码,它从文件夹中读取具有特定扩展名的所有文件,每个数据集都保存为具有默认名称的数据框.代码工作正常,直到我把它变成一个函数.该函数运行正常,但没有返回任何东西.我想询问是否有办法让这个函数返回所有数据帧?
功能如下:
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="")))
}
}
Run Code Online (Sandbox Code Playgroud)
我将理解如何使这个功能起作用的一些指导.
谢谢.
你的功能确实没有返回任何东西.要解决此问题,您可以将在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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2721 次 |
| 最近记录: |