gpt4 book ai didi

r - 保存多个数据帧并从函数返回它们

转载 作者:行者123 更新时间:2023-12-04 07:36:12 25 4
gpt4 key购买 nike

我有一段代码可以从文件夹中读取具有特定扩展名的所有文件,并且每个数据集都保存为具有默认名称的数据框。代码工作正常,直到我将它变成一个函数。该函数运行良好但未返回任何内容。我想问一下有没有办法让这个函数返回所有的数据帧?

函数如下:

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

我会很感激一些关于如何让这个功能发挥作用的指导。

谢谢。

最佳答案

你的函数确实没有返回任何东西。要解决此问题,您可以将在 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)

关于r - 保存多个数据帧并从函数返回它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com