【问题标题】:How do you create a user defined formula functions in R如何在 R 中创建用户定义的公式函数
【发布时间】:2017-01-26 07:05:00
【问题描述】:

R 能够让您定义一个公式,并将转换函数应用于其中一个变量。例如在下面的公式中,对数变换将应用于变量b

y ~ a + log(b) + c

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

y ~ foo(a) + b 

【问题讨论】:

  • 这类似于定义一个普通函数并调用它,我相信
  • func <- function(x) x ; form <- as.formula("mpg~func(cyl)+am" ) ; lm(form, data = mtcars) OR `lm(mpg ~ func(cyl) + am)`

标签: r syntax formula user-defined-functions


【解决方案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

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多