0
中創建用戶定義的公式函數R有能力讓您定義一個公式,並將變換函數應用於其中一個變量。例如,在下面的公式中,對數轉換將應用於變量b
。如何在R
y ~ a + log(b) + c
怎樣一個R中定義自己的公式功能,不需要使用的I()
?例如在下面的公式中應用用戶定義的函數foo
到a
。
y ~ foo(a) + b
中創建用戶定義的公式函數R有能力讓您定義一個公式,並將變換函數應用於其中一個變量。例如,在下面的公式中,對數轉換將應用於變量b
。如何在R
y ~ a + log(b) + c
怎樣一個R中定義自己的公式功能,不需要使用的I()
?例如在下面的公式中應用用戶定義的函數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;形式< - as.formula(「mpg〜func(cyl)+ am」); lm(form,data = mtcars)'或'lm(mpg〜func(cyl)+ am)' –