我使用動態變量名稱調用mutate。這主要是工作的一個例子是:爲什麼使用list()危險.dots = setNames()在dplyr中使用?
df <- data.frame(a = 1:5, b = 1:5)
func <- function(a,b){
return(a+b)
}
var1 = 'a'
var2 = 'b'
expr <- interp(~func(x, y), x = as.name(var1), y = as.name(var2))
new_name <- "dynamically_created_name"
temp <- df %>% mutate_(.dots = setNames(expr, nm = new_name))
將會產生
temp
a b func(a, b)
1 1 1 2
2 2 2 4
3 3 3 6
4 4 4 8
5 5 5 10
這主要是罰款,除了集名稱忽略了納米關鍵。這是通過列表()包裝我的函數求解:
temp <- df %>% mutate_(.dots = setNames(list(expr), nm = new_name))
temp
a b dynamically_created_name
1 1 1 2
2 2 2 4
3 3 3 6
4 4 4 8
5 5 5 10
我的問題是爲什麼setNames忽略它擺在首位的關鍵,以及如何列表()解決這一問題?
等待那不是它!用'new_name'代替列名,但我們想用它的*值*代替它! – AndrewMacDonald
這實際上引發了一些額外的問題。我認爲我的問題的核心是我不完全理解.dots的語法或功能。是否有文檔或小插圖在「nse」小插圖之外更詳細地處理它? –
有'vignette(「lazyeval」)'也 – AndrewMacDonald