model.frame函数对R中的AsIs对象没有反应

时间:2016-03-22 13:06:35

标签: r

我试图以传递方式提取公式中传递的变量,即使用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 的修改变量?

3 个答案:

答案 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