我试图以传递方式提取公式中传递的变量,即使用log
转换或使用?AsIs
运算符来获取n次方但{{1看起来好像不对R
model.frame
运算符做出反应
?AsIs
有谁知道如何提取> library(survival)
> formula = Surv(futime, death) ~ mspike + log(mspike) + I(mspike)^2 + I(mspike)^3
> head(model.frame(formula, data = mgus))
Surv(futime, death) mspike log(mspike) I(mspike)
1 748 2.0 0.6931472 2
2 6751 1.3 0.2623643 1.3
3 277 1.3 0.2623643 1.3
4 1815 1.8 0.5877867 1.8
5 2587 1.4 0.3364722 1.4
6 563 1.8 0.5877867 1.8
的修改变量?
答案 0 :(得分:2)
I()
函数在R的公式语言中用于" escape"在公式语言中具有特殊含义的运算符。因此,要在模型中包含变量的平方,您需要将术语指定为I(mspike^2)
。然后它也出现在模型框架中:
data(iris)
m1 <- lm(Sepal.Width ~ Sepal.Length + log(Petal.Width) + I(Petal.Length^2), data = iris)
head(model.frame(m1))
Sepal.Width Sepal.Length log(Petal.Width) I(Petal.Length^2)
1 3.5 5.1 -1.6094379 1.96
2 3.0 4.9 -1.6094379 1.96
3 3.2 4.7 -1.6094379 1.69
4 3.1 4.6 -1.6094379 2.25
5 3.6 5.0 -1.6094379 1.96
6 3.9 5.4 -0.9162907 2.89
答案 1 :(得分:1)
而不是:
I(mspike)^2
使用:
I(mspike^2)
答案 2 :(得分:-1)
(model.frame(formula, data = mgus)$`I(mspike)`)^2