Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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文件?_R_Dataframe_Lapply - Fatal编程技术网

R 如何将函数应用于特定目录中的一组.csv文件?

R 如何将函数应用于特定目录中的一组.csv文件?,r,dataframe,lapply,R,Dataframe,Lapply,尽管使用lapply进行了大量研究和努力,我认为/希望这是正确的应用功能,但我无法实现以下目标,希望得到一些指导。我要做的是读取单个目录中的所有文件,将它们合并到单个数据帧中,确保每个文件在合并之前删除了前七行 请注意,所有文件都包含相同的列标题和数据类型 我尝试过这一点,但显然没有达到我想要达到的目标: files <- list.files(pattern = "*.csv") # Gather a list of everything in the directory that is

尽管使用lapply进行了大量研究和努力,我认为/希望这是正确的应用功能,但我无法实现以下目标,希望得到一些指导。我要做的是读取单个目录中的所有文件,将它们合并到单个数据帧中,确保每个文件在合并之前删除了前七行

请注意,所有文件都包含相同的列标题和数据类型

我尝试过这一点,但显然没有达到我想要达到的目标:

files <- list.files(pattern = "*.csv") # Gather a list of everything in the directory that is a .csv file.
aconex <- lapply(files, fread) # Use lapply (I think this is correct) to apply the fread() function (from the data.table package) to each .csv file
删除前七行后,我将第一行作为列名应用,然后删除第一行。再说一次,实现这一目标的更好方法是什么

理想情况下,我希望结果输出是x个数据帧df1、df2、…、dfX,然后我可以合并它们,但是,同样,必须有更好的方法-它是什么


简单地说,我希望每个文件都被读入自己的数据帧,然后第8行的值被用作列标题,然后删除前八行我只保留了第八行,以便在删除前将其用于列标题。

这可以通过创建一个以read.csv进行读取,然后使用skip参数删除前七行来完成。然后可以将所有data.frames与do.call粘在一起


取决于你想做什么。。。列出文件
for(x in list.files(pattern = "*.csv")){
  df <- data.table::fread(x)
  df <- df[-(1:7), ]
  colnames(df) <- as.character(unlist(df[1,]))
  df <- df[-(1), ]
}
files <- list.files(pattern = "*.csv")

#create f, which is a list of data frames
f <- lapply(files, function(m) df <- read.csv(m, skip = 7, header = TRUE))

#stick them all together with do.call-rbind
f_combine <- do.call("rbind", f)
#create f, which is a list of data frames; modified with fread from data.table
f <- lapply(files, function(m) df <- fread(m, skip = 7))

#use rbindlist this time
f_combine <- rbindlist(f )