使用plyr / dplyr

时间:2015-09-19 19:25:56

标签: r function arguments dplyr

此问题类似于之前的Stack question,但该函数调用plyr/dplyr包函数:

使用示例进行说明:

library(dplyr)
df <- data.frame(A=1:10, B=2:11, C=3:12) 
func <- function(name,dat=df){
        output <- dat %>%
                  select(A,name) %>%
                  arrange(desc(name))
}

以下调用自然会产生错误:

result <- func(B)

通过arg。作为角色:

result <- func("B")

给出:

Error: All select() inputs must resolve to integer column positions.

更新: 请注意,func还会调用arrange()中的dplyr函数。目前,select_解决了评论中建议的1/2问题。

使用arrange_(desc(name))会抛出此错误:eval中出错(expr,envir,enclos):大小不正确(1),期望:10

更新/修改: 正如评论中所建议的那样,决议可以是:

func <- function(name,dat=df){
        output <- dat %>%
                  select_(~A,name) %>%
                  arrange_(interp(~desc(var), var=as.name(name)))
}

result <- func(B)

是否可以将以下对ggplot()的调用“修补”为func?非常希望自动化该过程:

 plot <-  ggplot(result, aes(x=A, y=B))+
          geom_bar(stat='identity)

0 个答案:

没有答案