如何在R中创建用户定义的公式函数

时间:2017-01-26 07:05:00

标签: r syntax formula user-defined-functions

R能够允许您使用应用于其中一个变量的变换函数来定义公式。例如,在以下公式中,对数变换将应用于变量b

y ~ a + log(b) + c

如何在不使用I()的情况下在R中定义自己的公式函数?例如,将用户定义的函数foo应用于a以下公式。

y ~ foo(a) + b 

1 个答案:

答案 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