0

関数バリアントを使用しているにもかかわらず、1 つの関数で複数の dplyr 関数を使用するのに問題があります。

library(dplyr)

# Data:
mydf <- data.frame( 
  var1     = factor(rep(1:24, each = 100)),
  var2    = runif(2400, min = -10, max = 125),
  var3     = runif(2400, min = 0, max = 2500),
  var4     = runif(2400, min = - 10, max = 25)  
)

# The function I want to build: 


fx.average <- function(df, varlist) {
  # select some varibles from a data frame
  df <- df %>% dplyr::select_(.dots = varlist)

   # Group by a variable and then just calculate the mean
  df <-df %>% dplyr::group_by_(var1) %>% # added df here
    dplyr::summarise_each_(funs_(mean(., na.rm = TRUE)))
}

そのため、次の関数をテストします。

# Test function, Setup var-list
varlist0 <- c("var1", "var2", "var3")    

fx.average(mydf, varlist0)
# Error in dplyr::group_by_(var1) : object 'var1' not found
#  object 'var1' not found 


# Manual example
mydf %>% dplyr::select(var1, var2, var3) %>% 
  group_by(var1) %>% 
  summarise_each(funs(mean(., na.rm = TRUE)))

何がうまくいかないのかわからない?他の質問から、関数内で使用するために構築されているため、関数にアンダースコアを追加することで解決する必要があるようです?

4

1 に答える 1