收集没有任何要添加到框架的数据的文件列表

问题描述 投票:0回答:1

我正在尝试将多个Excel文件全部加载到一个数据框中。有些文件在我想要的工作表中没有任何数据,因此我正在寻找编写代码来收集确实有数据的文件,但还会告诉我不包含哪些文件,因为它们没有没有任何数据。我编写的代码确实告诉我,如果我只是在ifelse语句的任何部分中“ print(i)”,则哪些数据没有数据。但是,一旦我尝试做其他事情而不是打印,似乎就无视我了!真是气死我了如何收集未对总数据框架有用的文件的名称?

这很好用:

library(readxl)
files <- list.files(path="./sfiles", pattern = "*.xls", full.names = T)
  alldiasendcgmlist <- lapply(files,function(i){
 ifelse(nrow(i)==NULL, NULL, i$name<-i)
   x= read_excel(i,sheet=2,skip=4)

   ifelse(nrow(x)>1,  x$ID <- i, print(i))

     x
     })

但是一旦我想将这些印刷品收集到矢量中,矢量就继续保持空白:

library(readxl)
files <- list.files(path="./sfiles", pattern = "*.xls", full.names = T)
vectornodata <- character(0)

  alldiasendcgmlist <- lapply(files,function(i){
 ifelse(nrow(i)==NULL, NULL, i$name<-i)
   x= read_excel(i,sheet=2,skip=4)

   ifelse(nrow(x)>1,  x$ID <- i, nodata <- append(vectornodata, i))

     x
     })

帮助!

r excel for-loop append na
1个回答
0
投票

我将使用自己的示例来说明一个人可以做什么。只需使您的函数返回一个列表,然后使用其元素之一来筛选我们的空数据框:

input <- c(1,2,3,4,5,6)

func <- function(x){
  list("square"=x^2, "even"= ifelse(x %% 2 == 0, TRUE, FALSE))
}

res <- lapply(1:6, func) # returns a list of lists
even_numbers <- input[sapply(res, function(x) x[[2]])] # use 2nd element to filter
© www.soinside.com 2019 - 2024. All rights reserved.