此问题类似于之前的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)