Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中将CSV文件连接到单个数据帧中,为什么在使用typeof时仍然将list作为类?_R_Csv_For Loop_Dataframe_Concatenation - Fatal编程技术网

在R中将CSV文件连接到单个数据帧中,为什么在使用typeof时仍然将list作为类?

在R中将CSV文件连接到单个数据帧中,为什么在使用typeof时仍然将list作为类?,r,csv,for-loop,dataframe,concatenation,R,Csv,For Loop,Dataframe,Concatenation,以下是specdata目录的zip文件,其中包含所有CSV文件: 我正在尝试将所有文件放入一个数据框中,以便可以使用complete.cases。此代码创建一个数据框列表,但不创建单个数据框,因此我当前在尝试使用complete.cases时出错。我研究了使用merge,但我似乎不知道如何在for循环中使用merge来处理多个文件。我已经尝试过实现rbind,我想我已经接近实现rbind了,但我似乎也不知道如何在for循环中正确使用它。我是一个初学者,在学习矢量化函数(如lappy)之前,我会

以下是specdata目录的zip文件,其中包含所有CSV文件:

我正在尝试将所有文件放入一个数据框中,以便可以使用complete.cases。此代码创建一个数据框列表,但不创建单个数据框,因此我当前在尝试使用complete.cases时出错。我研究了使用merge,但我似乎不知道如何在for循环中使用merge来处理多个文件。我已经尝试过实现rbind,我想我已经接近实现rbind了,但我似乎也不知道如何在for循环中正确使用它。我是一个初学者,在学习矢量化函数(如lappy)之前,我会尝试理解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

}

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

files do.call(rbind,listofdataframes)有关
typeof
/
class
的区别,请参阅<代码>数据。帧
列表
str()
通常比
typeof()有用得多。
files <- list.files()
data <- lapply(files,function(x) read.csv(x))
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)