需要使用参数group_by变量调用函数

时间:2016-01-12 06:31:09

标签: r

我正在探索数据并得出一个函数将是有用的。附加的代码使用了iris数据集,有4次尝试创建一个可用的函数,但每个尝试都给出了找不到group_by变量的错误。

这是代码。第一部分只是简单的代码。接下来的4个是失败的功能。

#  dplyr group by programically
library(dplyr)
data(iris)
dtbl <- tbl_df(iris)
dtbl %>% group_by(Species) %>%
     mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
     summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
                    mean(Sepal.Width))


datafun <- function(groupbyvar)
library(dplyr)
data(iris)
groupbyvar <- as.character(groupbyvar)
dtbl <- tbl_df(iris)
dtbl %>% group_by_(groupbyvar) %>%
     mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
     summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
                    mean(Sepal.Width))

bb <- datafun("Species")

datafun <- function(groupbyvar)
     library(dplyr)
data(iris)
groupbyvar <- as.character(groupbyvar)
dtbl <- tbl_df(iris)
dtbl %>% group_by_("groupbyvar") %>%
     mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
     summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
                    mean(Sepal.Width))

bb <- datafun("Species")


datafun <- function(groupbyvar)
     library(dplyr)
data(iris)
groupbyvar <- as.character(groupbyvar)
dtbl <- tbl_df(iris)
dtbl %>% group_by(groupbyvar) %>%
     mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
     summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
                    mean(Sepal.Width))

bb <- datafun("Species")

datafun <- function(groupbyvar)
     library(dplyr)
data(iris)
groupbyvar <- as.character(groupbyvar)
dtbl <- tbl_df(iris)
dtbl %>% group_by("groupbyvar") %>%
     mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
     summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
                    mean(Sepal.Width))

bb <- datafun("Species")

and the console output

> #  dplyr group by programically
> library(dplyr)
> data(iris)
> dtbl <- tbl_df(iris)
> dtbl %>% group_by(Species) %>%
+      mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
+      summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
+                     mean(Sepal.Width))
Source: local data frame [3 x 3]

     Species MeanSepalLenght MeanSepalWidth
      (fctr)           (dbl)          (dbl)
1     setosa           5.006          3.428
2 versicolor           5.936          2.770
3  virginica           6.588          2.974
> 
> 
> datafun <- function(groupbyvar)
+ library(dplyr)
> data(iris)
> groupbyvar <- as.character(groupbyvar)
Error: object 'groupbyvar' not found
> dtbl <- tbl_df(iris)
> dtbl %>% group_by_(groupbyvar) %>%
+      mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
+      summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
+                     mean(Sepal.Width))
 Hide Traceback

 Rerun with Debug
 Error in as.lazy_dots(list(...)) : object 'groupbyvar' not found 
12 as.lazy_dots(list(...)) 
11 lazyeval::all_dots(.dots, ...) 
10 group_by_prepare(.data, ..., .dots = .dots, add = add) 
9 group_by_.data.frame(., groupbyvar) 
8 group_by_(., groupbyvar) 
7 function_list[[i]](value) 
6 freduce(value, `_function_list`) 
5 `_fseq`(`_lhs`) 
4 eval(expr, envir, enclos) 
3 eval(quote(`_fseq`(`_lhs`)), env, env) 
2 withVisible(eval(quote(`_fseq`(`_lhs`)), env, env)) 
1 dtbl %>% group_by_(groupbyvar) %>% mutate(SpeciesArea = Sepal.Length * 
    Sepal.Width) %>% summarise(MeanSepalLenght = mean(Sepal.Length), 
    MeanSepalWidth = mean(Sepal.Width)) 
> 
> bb <- datafun("Species")
> 
> datafun <- function(groupbyvar)
+      library(dplyr)
> data(iris)
> groupbyvar <- as.character(groupbyvar)
Error: object 'groupbyvar' not found
> dtbl <- tbl_df(iris)
> dtbl %>% group_by_("groupbyvar") %>%
+      mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
+      summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
+                     mean(Sepal.Width))
 Hide Traceback

 Rerun with Debug
 Error: unknown column 'groupbyvar' 
12 stop(structure(list(message = "unknown column 'groupbyvar'", 
    call = NULL, cppstack = NULL), .Names = c("message", "call", 
"cppstack"), class = c("Rcpp::exception", "C++Error", "error", 
"condition"))) 
11 grouped_df_impl(data, unname(vars), drop) 
10 grouped_df(groups$data, groups$groups) 
9 group_by_.data.frame(., "groupbyvar") 
8 group_by_(., "groupbyvar") 
7 function_list[[i]](value) 
6 freduce(value, `_function_list`) 
5 `_fseq`(`_lhs`) 
4 eval(expr, envir, enclos) 
3 eval(quote(`_fseq`(`_lhs`)), env, env) 
2 withVisible(eval(quote(`_fseq`(`_lhs`)), env, env)) 
1 dtbl %>% group_by_("groupbyvar") %>% mutate(SpeciesArea = Sepal.Length * 
    Sepal.Width) %>% summarise(MeanSepalLenght = mean(Sepal.Length), 
    MeanSepalWidth = mean(Sepal.Width)) 
> 
> bb <- datafun("Species")
> 
> 
> datafun <- function(groupbyvar)
+      library(dplyr)
> data(iris)
> groupbyvar <- as.character(groupbyvar)
Error: object 'groupbyvar' not found
> dtbl <- tbl_df(iris)
> dtbl %>% group_by(groupbyvar) %>%
+      mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
+      summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
+                     mean(Sepal.Width))
 Hide Traceback

 Rerun with Debug
 Error: unknown column 'groupbyvar' 
13 stop(structure(list(message = "unknown column 'groupbyvar'", 
    call = NULL, cppstack = NULL), .Names = c("message", "call", 
"cppstack"), class = c("Rcpp::exception", "C++Error", "error", 
"condition"))) 
12 grouped_df_impl(data, unname(vars), drop) 
11 grouped_df(groups$data, groups$groups) 
10 group_by_.data.frame(.data, .dots = lazyeval::lazy_dots(...), 
    add = add) 
9 group_by_(.data, .dots = lazyeval::lazy_dots(...), add = add) 
8 group_by(., groupbyvar) 
7 function_list[[i]](value) 
6 freduce(value, `_function_list`) 
5 `_fseq`(`_lhs`) 
4 eval(expr, envir, enclos) 
3 eval(quote(`_fseq`(`_lhs`)), env, env) 
2 withVisible(eval(quote(`_fseq`(`_lhs`)), env, env)) 
1 dtbl %>% group_by(groupbyvar) %>% mutate(SpeciesArea = Sepal.Length * 
    Sepal.Width) %>% summarise(MeanSepalLenght = mean(Sepal.Length), 
    MeanSepalWidth = mean(Sepal.Width)) 
> 
> bb <- datafun("Species")
> 
> datafun <- function(groupbyvar)
+      library(dplyr)
> data(iris)
> groupbyvar <- as.character(groupbyvar)
Error: object 'groupbyvar' not found
> dtbl <- tbl_df(iris)
> dtbl %>% group_by("groupbyvar") %>%
+      mutate(SpeciesArea = Sepal.Length * Sepal.Width) %>%
+      summarise(MeanSepalLenght = mean(Sepal.Length), MeanSepalWidth =
+                     mean(Sepal.Width))
Source: local data frame [1 x 3]

  "groupbyvar" MeanSepalLenght MeanSepalWidth
         (chr)           (dbl)          (dbl)
1   groupbyvar        5.843333       3.057333
> 
> bb <- datafun("Species")
> 

感谢任何帮助。我一天中的大部分时间都花费了大量时间来完成这项工作。没有发现任何解决问题的方法,当然我可以复制,粘贴,搜索和替换,但这是最后的手段。我希望从数据中创建有意义的变量将揭示我怀疑隐藏在数据中的混淆因素。

由于 卡尔萨顿

0 个答案:

没有答案