我正在创建一个函数,它通过数据框压缩并将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"
可以了,但是整个函数就失去了可重用性。
如何将列名传递给内部函数而不会出错?