Я хочу використовувати dplyr::mutate()
для створення декількох нових стовпців у кадрі даних. Назви стовпців та їх вміст повинні динамічно генеруватися.
Приклад даних із райдужної оболонки:
library(dplyr)
iris <- tbl_df(iris)
Я створив функцію для вимкнення моїх нових стовпців зі Petal.Width
змінної:
multipetal <- function(df, n) {
varname <- paste("petal", n , sep=".")
df <- mutate(df, varname = Petal.Width * n) ## problem arises here
df
}
Тепер я створюю цикл для створення своїх стовпців:
for(i in 2:5) {
iris <- multipetal(df=iris, n=i)
}
Однак, оскільки мутація вважає, що varname є буквальною назвою змінної, цикл створює лише одну нову змінну (звану varname) замість чотирьох (називається petal.2 - petal.5).
Як мені mutate()
можна використовувати своє динамічне ім'я як ім'я змінної?
dplyr
є ціла віньєтка на нестандартному оцінюванні
mutate_
, і з інших функцій насправді не очевидно, як її використовувати.