一部の機械学習アルゴリズムは因子を処理できないため、データ フレームを通過し、factor
変数を新しいダミー変数に展開する関数を作成しています。spread()
そのために、クリーニング関数内の関数を使用します。
ただし、拡散する必要がある列の名前を渡そうとすると、エラーがスローされます。
Error: Invalid column specification
コードは次のとおりです。
library(tidyr)
library(dplyr)
library(C50) # this is one source for the churn data
data(churn)
f <- function(df, name) {
df$dummy <- c(1:nrow(df)) # create dummy variable with unique values
df <- spread(df, key <- as.character(substitute(name)), "dummy", fill = 0 )
}
churnTrain = f(churnTrain, name = "state")
str(churnTrain)
もちろん、それを置き換えるkey = as.character(substitute(name))
とkey = "state"
問題なく動作しますが、関数全体が再利用可能性を失います。
エラーなしで列名を内部関数に渡す方法は?