Saya ingin menggunakan dplyr::mutate()untuk membuat beberapa kolom baru dalam bingkai data. Nama kolom dan isinya harus dihasilkan secara dinamis.
Contoh data dari iris:
library(dplyr)
iris <- tbl_df(iris)
Saya telah membuat fungsi untuk mengubah kolom baru saya dari Petal.Widthvariabel:
multipetal <- function(df, n) {
varname <- paste("petal", n , sep=".")
df <- mutate(df, varname = Petal.Width * n) ## problem arises here
df
}
Sekarang saya membuat lingkaran untuk membuat kolom saya:
for(i in 2:5) {
iris <- multipetal(df=iris, n=i)
}
Namun, karena mutate berpikir varname adalah nama variabel literal, loop hanya membuat satu variabel baru (disebut varname) alih-alih empat (disebut petal.2 - petal.5).
Bagaimana saya bisa mutate()menggunakan nama dinamis saya sebagai nama variabel?
dplyrmiliki sketsa lengkap tentang evaluasi non-standar
mutate_, dan itu benar-benar tidak jelas dari fungsi lain cara menggunakannya.