首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据行数将多个csvs导入R

问根据行数将多个csvs导入R
EN

Stack Overflow用户
提问于 2021-03-09 12:13:19
回答 1查看 18关注 0票数 0

我有一个(主要) csvs的文件夹,我想要读入R,然后绑定在一起。但是,我只想导入641行的csvs。这是来自我的实验的数据,所以任何CSV具有更少的行或为空意味着参与者放弃了研究,因此我不想包括它们。

代码语言:javascript
复制
#lists all csv files in folder
files <- list.files(pattern = "*.csv", recursive = T)

# initialize empty object 
pdm_dat <- NULL

#loop through files, import, concatenate
for(file in files){
  print(file)
  jj <- read.csv(file, sep = ",", header = T)
  print(nrow(jj))
  pdm_dat <- rbind.fill(pdm_dat, jj)
} 

但是我得到了一个错误,因为其中一个CSVs是空的(read.table(file = file, header = header, sep = sep, quote = quote, : no lines available in input. )

那么,如何遍历文件并只导入641行的文件呢?

我试图这样做,但结果是一个长度为139的列表,其中每个列表都是该文件的行数,我可以在for循环中使用它作为条件吗?:

代码语言:javascript
复制
y<-lapply(X = files, FUN = function(x) {
  length(count.fields(x, skip = 1))
})

对不起,我知道这可能是一个简单的问题,我是R的新手。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-09 12:27:15

您可以尝试:

代码语言:javascript
复制
files <- list.files(pattern = "\\..csv$", recursive = TRUE)

Filter(length, lapply(files, function(x) {
  tmp <- tryCatch(read.csv(x), error = function(e) return(NA))
  if(NROW(tmp) == 641) tmp else NULL
})) -> combine_data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66540707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档