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.Width
variabel:
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?
dplyr
miliki sketsa lengkap tentang evaluasi non-standar
mutate_
, dan itu benar-benar tidak jelas dari fungsi lain cara menggunakannya.