Я хочу использовать 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)
}
Однако, так как mutate думает, что varname является буквальным именем переменной, цикл создает только одну новую переменную (называемую varname) вместо четырех (называемых petal.2 - petal.5).
Как я могу mutate()
использовать свое динамическое имя в качестве имени переменной?
dplyr
есть целая виньетка о нестандартной оценке
mutate_
, и из других функций не совсем понятно, как ее использовать.