2017-01-26 48 views
0

中創建用戶定義的公式函數R有能力讓您定義一個公式,並將變換函數應用於其中一個變量。例如,在下面的公式中,對數轉換將應用於變量b如何在R

y ~ a + log(b) + c 

怎樣一個R中定義自己的公式功能,不需要使用的I()例如在下面的公式中應用用戶定義的函數fooa

y ~ foo(a) + b 
+0

它類似於定義一個正常的函數並調用它,我相信 –

+1

'func < - function(x)x;形式< - as.formula(「mpg〜func(cyl)+ am」); lm(form,data = mtcars)'或'lm(mpg〜func(cyl)+ am)' –

回答

0

可以 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