0
Rには、変換関数を変数の1つに適用して式を定義できるようにする機能があります。たとえば、次の式では、対数変換は変数b
に適用されます。ユーザ定義の数式関数を作成する方法R
y ~ a + log(b) + c
どのように1はI()
を使用せずにRで独自の数式関数を定義していますか?たとえば、ユーザ定義関数foo
をa
に適用すると、次の式になります。
y ~ foo(a) + b
Rには、変換関数を変数の1つに適用して式を定義できるようにする機能があります。たとえば、次の式では、対数変換は変数b
に適用されます。ユーザ定義の数式関数を作成する方法R
y ~ a + log(b) + c
どのように1はI()
を使用せずにRで独自の数式関数を定義していますか?たとえば、ユーザ定義関数foo
をa
に適用すると、次の式になります。
y ~ foo(a) + b
あなたは 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
通常の関数を定義して呼び出すのと似ていると私は信じています –
'func < - function(x)x; form < - as.formula( "mpg〜func(cyl)+ am"); lm(形式、データ= mtcars) 'OR' lm(mpg〜func(cyl)+ am) ' –