代码之家  ›  专栏  ›  技术社区  ›  Konrad

使用dplyr的enquo通过sparklyr访问Spark表列

  •  2
  • Konrad  · 技术社区  · 7 年前

    我想使用dplyr enquo 在内部 lapply

    lapply(tbl_vars(sprkTbl),
           function(col_nme) {
               print(col_nme)
               # Enquoe column name
               quo_col_nme <- enquo(col_nme)
               print(quo_col_nme)
    
               sprkTbl %>%
                   select(!!quo_col_nme) %>% 
                   # do stuff
                   collect -> dta_res
           }) -> l_res
    

    中出错 (function (x, strict = TRUE) :参数已

    :

    >> lapply(tbl_vars(sprkTbl),
    ...        function(col_nme) {
    ...            print(col_nme)
    ...            # Enquoe column name
    ...            quo_col_nme <- enquo(col_nme)
    ...            # print(quo_col_nme)
    ...            
    ...            # sprkTbl%>%
    ...            #     select(!!quo_col_nme) %>% 
    ...            #     # do stuff
    ...            #     collect -> dta_res
    ...        }) -> l_res
    [1] "first_column_in_spark"
    

    (然后是相同的错误)

    (函数(x,strict=TRUE) :参数具有

    我想知道为什么 恩quo tbl_vars 返回一个普通的字符向量,不是吗 col_name 是一根绳子吗?我设想语法的工作方式与中的相同:

    mtcars %>% select(!!enquote("am")) %>% head(2)
                  am
    Mazda RX4      1
    Mazda RX4 Wag  1
    


    编辑

    lapply(names(mtcars),function(x) {
        col_enq <- enquo(x)
        mtcars %>% 
            select(!!col_enq) %>% 
            head(2)
    })
    

    产生相同的错误。

    老年人 _ -基于语法的作品

    lapply(names(mtcars),function(x) {
        # col_enq <- enquo(x)
        mtcars %>% 
            select_(x) %>% 
            head(2)
    })
    

    select_ .

    1 回复  |  直到 7 年前
        1
  •  1
  •   David    7 年前

    enquo 而不是 quo ?

    library(dplyr)
    
    lapply(names(mtcars),function(x) {
      col_enq <- quo(x)
      mtcars %>% 
        select(!!col_enq) %>% 
        head(2)
    })
    #> [[1]]
    #>               mpg
    #> Mazda RX4      21
    #> Mazda RX4 Wag  21
    #> 
    #> [[2]]
    #>               cyl
    #> Mazda RX4       6
    #> Mazda RX4 Wag   6
    #> 
    #> [[3]]
    #>               disp
    #> Mazda RX4      160
    #> Mazda RX4 Wag  160
    #> 
    #> [[4]]
    #>                hp
    #> Mazda RX4     110
    #> Mazda RX4 Wag 110
    #> 
    #> [[5]]
    #>               drat
    #> Mazda RX4      3.9
    #> Mazda RX4 Wag  3.9
    #> 
    #> [[6]]
    #>                  wt
    #> Mazda RX4     2.620
    #> Mazda RX4 Wag 2.875
    #> 
    #> [[7]]
    #>                qsec
    #> Mazda RX4     16.46
    #> Mazda RX4 Wag 17.02
    #> 
    #> [[8]]
    #>               vs
    #> Mazda RX4      0
    #> Mazda RX4 Wag  0
    #> 
    #> [[9]]
    #>               am
    #> Mazda RX4      1
    #> Mazda RX4 Wag  1
    #> 
    #> [[10]]
    #>               gear
    #> Mazda RX4        4
    #> Mazda RX4 Wag    4
    #> 
    #> [[11]]
    #>               carb
    #> Mazda RX4        4
    #> Mazda RX4 Wag    4