R能够允许您使用应用于其中一个变量的变换函数来定义公式。例如,在以下公式中,对数变换将应用于变量b
。
y ~ a + log(b) + c
如何在不使用I()
的情况下在R中定义自己的公式函数?例如,将用户定义的函数foo
应用于a
以下公式。
y ~ foo(a) + b
答案 0 :(得分:1)
你可以在R公式中使用你自己的函数。
示例功能:
foo <- function(x)
log(x) ^ 2
数据:
set.seed(1)
dat <- data.frame(y = rnorm(5), x = rgamma(5, 2))
根据公式和数据创建模型矩阵:
mod <- model.matrix(y ~ 1 + foo(x), data = dat)
mod
# (Intercept) foo(x)
# 1 1 0.16837521
# 2 1 0.02222275
# 3 1 0.68509896
# 4 1 0.01936180
# 5 1 0.14758002
# attr(,"assign")
# [1] 0 1
该功能确实应用于数据:
identical(foo(dat$x), unname(mod[ , "foo(x)"]))
# [1] TRUE