如何传递一列文件名进行变异并返回dplyr中的列数

时间:2019-04-19 02:04:11

标签: r dplyr rlang

我具有以下功能


colr <- function(file){
  a <- file %>% 
    read_xlsx() 

  ncol(a)
}

我要传递一个小标题-该函数包含我的excel文件名的一列,并新建一个列,告诉我excel电子表格中的列数。

所以我的tibble(file.list)是

> file.list
   <chr>
   file_a.xlsx
   file_b.xlsx
   file_c.xlsx

我想要以下

> file.list       ncols
   <chr>          <int>
   file_a.xlsx      10
   file_b.xlsx      10
   file_c.xlsx       2

这是我尝试过的

tibble(file.list) %>% 
  mutate(ncols =  colr(file.list))

但是我得到了错误

  

错误:path必须是字符串

然后我尝试使用quo

tibble(file.list) %>% 
  mutate(ncols =  colr(quo(file.list)))

我最终遇到了同样的错误。

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

如@Lyngbakr在评论中所建议,我们可以为每个map_int使用rowwisefile.list

library(dplyr)
library(purrr)

tibble::tibble(file.list) %>% 
       mutate(ncols =  map_int(file.list, colr))


tibble::tibble(file.list) %>% 
         rowwise() %>%
         mutate(ncols =  colr(file.list))