我一直試圖提取傳遞給dplyr :: mutate()函數的變量的名稱,但未成功。下面是一個簡單的例子,我想創建一個返回字符串「英里」內發生變異的功能:只要R dplyr - 在mutate/summarize中獲取字符串的變量名稱
# mtcars dataset with grouping variable
dataset = mtcars
dataset$group = c(1, 2, 3, 4)
# function to call inside mutate()
f = function(col, data){
str_col = deparse(lazyeval::expr_find(col))
str_col
}
# this does not work: returns the content of mpg
# instead of the variable name as a string
dataset %>%
group_by(group) %>%
mutate(f = f(mpg, dataset)
) %>%
select(group, f)
我用lazyeval :: expr_find(),因爲只有替補多「上升」一層我理解了文檔。當我在函數wrap()中調用f()時,它起作用,但它返回mpg的內容,而不是當我將其放入group_by()%>%mutate()中時名稱「mpg」的內容。一些相關的問題,但沒有一個能夠解決我的問題。
任何幫助,不勝感激:)
f_updated簡直是要產生1的值看起來你只是試圖將總和除以總和?如果是這樣的話:%dataset%>% dplyr :: select(mpg,group)%>% mutate(tot.sum = sum(mpg))%>% group_by(group)%>% summary(result = sum(mpg)/ mean(tot.sum))' –
我擔心我的文本有點誤導,sry ... sum(mpg)/ sum(。$ mpg)已經有了這個伎倆,但那只是一個小小的例如檢查我是否得到相同的輸出。我的問題是,當我將它傳遞給mutate()中的某個函數時,我想要獲取變量名作爲字符串,並且該工作還沒有正常工作:(thx雖然! – Christoph
是的,我不知道你的實際問題是什麼 –