使用lapply跳过最后N行,然后读取.csv

时间:2019-09-12 00:09:11

标签: r lapply readlines

我是R的初学者,试图读取多个csv文件,从每一个中删除/跳过最后5行,然后将它们绑定在一起。我不知道要执行哪些步骤来删除行以及要使用什么功能?我在下面尝试过 <script> import PersonService from "../../Services/personservice"; export default { name: "RegistroComponent", data: () => ({}), getData() { this.PersonService.add(1,"Steven","Chacon"); } }; ,然后尝试使用nrow,但我很确定它在错误的位置。

这就是我的开始:

readLines

我不确定要删除该代码中的行,因此我将其拆分以理解它并尝试使用alldata <- do.call(rbind, lapply(list.files(path = "./savedfiles", full.names = TRUE), read.csv))

readLines

这只是抛出一个错误,指出缺少参数FUN,所以我知道我做的不正确,但不确定如何解决。

2 个答案:

答案 0 :(得分:1)

类似的事情应该使您走上正确的道路。这将首先读取文件,然后删除最后5行,最后将它们绑定在一起。也建议不要使用可能与函数名称冲突的变量名称。 filesc是基数R中的函数。在这里,我使用all_files而不是files。 -

all_files <- list.files(path = "./savedfiles", full.names = TRUE)

do.call(rbind, # assuming columns match 1:1; use dplyr::bind_rows() if not 1:1
  lapply(all_files, function(x) {
    head(read.csv(x, header = T, stringsAsFactors = F), -5) # change as per needs
  })
)

答案 1 :(得分:0)

使用tidyverse功能就可以

library(purrr)
library(dplyr)

all_files <- list.files(path = "./savedfiles", full.names = TRUE)
map_df(all_files, ~read.csv(.x) %>% slice(seq_len(n()-5)))