R在dyplyr函数内部使用paste来构建本地函数

时间:2017-05-25 14:28:57

标签: r dplyr rename paste summarize

我正在尝试使用dplyr内部的粘贴进行汇总或重命名,以便在构建本地函数时命名变量。我收到错误:意外' =' in:" mutate(some.text = x)%>%重命名(粘贴(' hp',x,sep ='')="

以下是一个例子:

data(mtcars)

get.information <- function(df, x) {
  df %>% 
    group_by(hp) %>% 
    summarize(paste('hp', x, sep= "")= n()) %>%
    mutate(some.text= x) 
}

get.information <- function(df, x) {
  df %>% 
    group_by(hp) %>% 
    summarize(Frequency= n()) %>%
    mutate(some.text= x) %>%
    rename(paste('hp', x, sep= "")= Frequency)
}

get.information(mtcars, 2)

我很感激任何帮助,提前谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

get.information <- function(df, x) {
    var.name = paste0('hp', x)
    var.val = lazyeval::interp('Frequency')
    df %>% 
        group_by(hp) %>% 
        summarize(Frequency= n()) %>%
        mutate(some.text= x) %>%
        mutate_(.dots = setNames(list(var.val), var.name))

}