Home > Mobile >  Feeding vector into summarise_at
Feeding vector into summarise_at

Time:12-23

I'm sure it is something obvious since I'm an R novice, but I cannot figure out why the first approach is working while the second is not. Something is wrong with my use of "paste".

library(dplyr)

    data(mtcars)
    characteristics <- c('disp', 'hp')
    summarise_at(df, .vars = vars(characteristics), mean)
    characteristics <- paste('disp hp', collapse = ",")
    summarise_at(df, .vars = vars(characteristics), mean)

CodePudding user response:

With help from a friend, I found the answer.

library('dplyr')

    data(mtcars)
    
    characteristics <- unlist(str_split('disp hp', ' '))
# the line above replaced characteristics <- paste('disp hp', collapse = ",")
    summarise_at(mtcars, .vars = vars(characteristics), mean)

CodePudding user response:

If you want to summarise over disp and hp of mtcars why not use a simpler and more straigthforward approach, like so?

mtcars %>%
  summarise(across(c('disp', 'hp'), mean))
      disp       hp
1 230.7219 146.6875

Of yourse, you can also 'feed' your vector into the across operation:

characteristics <- c('disp', 'hp')
mtcars %>%
  summarise(across(characteristics, mean))
          disp       hp
    1 230.7219 146.6875

Using summarise(across...)would also take into account that so-called scoped dplyr verbs have now essentially been superseded by across()

  • Related