我有以下代码
x <- c(1, 2, 3)
y <- c(2, 3, 4)
z <- c(3, 4, 5)
df <- data.frame(x, y, z)
model.matrix(x ~ .^4, df)
这给了我一个模型矩阵,其中包含预测因子$ y,z $和$ y:z $。但是,我也想要y ^ 2和z ^ 2,并希望使用一个使用“$。$”的解决方案,因为我有很多其他预测因素超出$ y $和$ z $。什么是解决这个问题的最佳方法?
答案 0 :(得分:1)
试试这个:
> x <- c(1, 2, 3)
> y <- c(2, 3, 4)
> z <- c(3, 4, 5)
> df <- data.frame(x, y, z)
>
> #Assuming that your 1st column is the response variable, then I excluded it to have
> #just the independent variables as a new data.frame called df.2
> df.2=df[,-1]
> model.matrix(x ~ .^4+I(df.2^2), df)
(Intercept) y z I(df.2^2)y I(df.2^2)z y:z
1 1 2 3 4 9 6
2 1 3 4 9 16 12
3 1 4 5 16 25 20
attr(,"assign")
[1] 0 1 2 3 3 4