我正在研究一个数据集,我必须生成动态传递给lm的公式.所以,我正在使用重新制定来做到这一点.
formula = reformulate(termlabels = c('feature1', 'feature2', 'feature3'), response="y")
Run Code Online (Sandbox Code Playgroud)
y是连续的.
这让我得到了公式 y ~ feature1+feature2+feature3
但是,我想要的公式 log(y+1) ~ feature1+feature2+feature3
我如何使用重新制定?
将响应作为带引号的表达式传递:
x <- c("feature1", "feature2", "feature3")
reformulate(x, response=quote(log(y+1)))
Run Code Online (Sandbox Code Playgroud)
或者您可以手动构建公式.这就是reformulate引擎盖下的内容.
formula(paste("log(y + 1) ~", paste(x, collapse="+")))
Run Code Online (Sandbox Code Playgroud)