gpt4 book ai didi

r - 将 CSV 文件连接到 R 中的单个数据帧中,为什么我在使用 typeof 时仍然将列表列为类?

转载 作者:行者123 更新时间:2023-12-01 23:55:59 25 4
gpt4 key购买 nike

这是 specdata 目录的 zip 文件,其中包含所有 CSV 文件: https://d396qusza40orc.cloudfront.net/rprog%2Fdata%2Fspecdata.zip

我正在尝试将所有文​​件放入一个数据框中,以便我可以使用 complete.cases,此代码创建了一个数据框列表而不是单个数据框,因此我目前在尝试使用 complete 时遇到错误。个案。我查看了使用合并,但我似乎无法理解如何在包含多个文件的 for 循环中使用合并。我已经尝试实现 rbind,我想我已经接近实现它了,但我似乎也无法弄清楚如何在 for 循环中正确使用它。我是一个初学者,在我继续像 lapply 这样的向量化函数之前试图理解 for 循环。

代码如下:

complete<- function(directory, id=1:332){
data<-NULL
for (i in 1:length(id)) {
data[[i]]<- c(paste(directory, "/",formatC(id[i], width=3, flag=0),".csv",sep=""))
}
cases<-NULL

for (d in 1:length(data)) {
cases[[d]]<-c(read.csv(data[d]))
}
df<-NULL
for (c in 1:length(cases)){
df[[c]]<-(data.frame(cases[c]))
}
df

}

最佳答案

要做的第一件事是删除 for 循环(如果你是初学者,那么直接进入 apply 系列,R 中的 for 循环有时更容易,但 apply 系列是 R 的方式) .

files <- list.files()
data <- lapply(files,function(x) read.csv(x))

然后取决于你是否真的想要 merge 或 rbind(因为它们不一样)

data_rbind <- do.call("rbind", data)

或者

merge.df <- Reduce(function(x, y) merge(x, y, all=T,by="your_value",sort=F), data, accumulate=F)

关于r - 将 CSV 文件连接到 R 中的单个数据帧中,为什么我在使用 typeof 时仍然将列表列为类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750255/

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