R 在全局环境中写入excel所有非零行数据帧

R 在全局环境中写入excel所有非零行数据帧,r,global-variables,r-xlsx,R,Global Variables,R Xlsx,在我的全局环境中,我有一组空(0行)和非空(>0行)Tibbles,我只想选择相关的,即非空的并将它们发送到write.xlsx命令 看起来这应该是一项相当可行的任务,但我很难回避它 让我们假设,为了简单起见,过程中的一些复杂代码会生成tibble A、B和C library(dplyr) library(xlsx) A<-tibble(a=1:3,aa=2:4,aaa=3:5) B<-tibble(b=rep(1,3),bb=rep(2,3),bbb=rep(3,3)) B<

在我的全局环境中,我有一组空(0行)和非空(>0行)Tibbles,我只想选择相关的,即非空的并将它们发送到write.xlsx命令

看起来这应该是一项相当可行的任务,但我很难回避它

让我们假设,为了简单起见,过程中的一些复杂代码会生成tibble A、B和C

library(dplyr)
library(xlsx)
A<-tibble(a=1:3,aa=2:4,aaa=3:5)
B<-tibble(b=rep(1,3),bb=rep(2,3),bbb=rep(3,3))
B<-B %>% filter(b>4)
C<-tibble(c=3:1,bb=4:2,bbb=5:3)
A;B;C

# A tibble: 3 x 3
      a    aa   aaa
  <int> <int> <int>
1     1     2     3
2     2     3     4
3     3     4     5
# A tibble: 0 x 3
# ... with 3 variables: b <dbl>, bb <dbl>, bbb <dbl>
# A tibble: 3 x 3
      c    bb   bbb
  <int> <int> <int>
1     3     4     5
2     2     3     4
3     1     2     3
有什么想法吗? 谢谢

您可以使用
get()
获取具有字符向量的对象:

库(dplyr,warn.conflicts=FALSE)
图书馆(writexl)
aaa
#>     
#> 1     1     2     3
#> 2     2     3     4
#> 3     3     4     5
writexlsx[[1]]
#>[1]“A.xlsx”
#> 
#> [[2]]
#>空的
#> 
#> [[3]]
#>[1]“C.xlsx”
#> 
#> [[4]]
#>空的
由(v0.3.0)创建于2019-11-27。您可以使用
get()
获取具有字符向量的对象:

库(dplyr,warn.conflicts=FALSE)
图书馆(writexl)
aaa
#>     
#> 1     1     2     3
#> 2     2     3     4
#> 3     3     4     5
writexlsx[[1]]
#>[1]“A.xlsx”
#> 
#> [[2]]
#>空的
#> 
#> [[3]]
#>[1]“C.xlsx”
#> 
#> [[4]]
#>空的

由(v0.3.0)于2019-11-27创建的函数

这里有一个函数,该函数获取并写入
.GlobalRnv
中的所有数据帧,或写入作为参数
dfnames
中的名称传递的数据帧

writexlsx <- function(dfnames){
  if(missing(dfnames)){
    lst <- mget(ls())
  }else{
    lst <- mget(dfnames)
  }
  lst <- lst[sapply(lst, inherits, "data.frame")]
  lst <- lst[sapply(lst, nrow) > 0]
  lapply(names(lst), function(x){
    write.xlsx(lst[[x]], file = paste0(x, ".xlsx"))
  })
}

writexlsx()

writexlsx这里有一个函数,它获取并将
.GlobalRnv
中的所有数据帧作为XLSX文件写入,或者写入作为参数
dfnames
中的名称传递的数据帧

writexlsx <- function(dfnames){
  if(missing(dfnames)){
    lst <- mget(ls())
  }else{
    lst <- mget(dfnames)
  }
  lst <- lst[sapply(lst, inherits, "data.frame")]
  lst <- lst[sapply(lst, nrow) > 0]
  lapply(names(lst), function(x){
    write.xlsx(lst[[x]], file = paste0(x, ".xlsx"))
  })
}

writexlsx()
writexlsx
writexlsx <- function(dfnames){
  if(missing(dfnames)){
    lst <- mget(ls())
  }else{
    lst <- mget(dfnames)
  }
  lst <- lst[sapply(lst, inherits, "data.frame")]
  lst <- lst[sapply(lst, nrow) > 0]
  lapply(names(lst), function(x){
    write.xlsx(lst[[x]], file = paste0(x, ".xlsx"))
  })
}

writexlsx()