首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并/cbind模型矩阵

合并/cbind模型矩阵
EN

Stack Overflow用户
提问于 2018-08-26 02:28:24
回答 2查看 204关注 0票数 0

这是我当前问题的简化版本。我需要从2个模型矩阵创建一个model.matrix,而不丢失"assign“中的信息。例如,考虑数据和公式

代码语言:javascript
复制
y<-rnorm(100); x1<-rnorm(100); x2<-rnorm(100); x3<-rnorm(100)
f1 <- y ~ x1 + x2 + x3

和2个使用X1X2创建的模型矩阵

代码语言:javascript
复制
trms<-terms.formula(f1)
trms2<-drop.terms(trms, dropx = 2)
trms3<-drop.terms(trms, dropx = -2)
X1<-model.matrix(trms2)
X2<-model.matrix(trms3)

有没有一种简单的方法可以从X1X2创建一个具有1个截距列和attr(,"assign")的矩阵X,该矩阵可以从f1获得

EN

回答 2

Stack Overflow用户

发布于 2018-08-26 02:42:49

如果我对问题的理解是正确的,那么简单直接的解释如何:

代码语言:javascript
复制
X3                <- cbind(X1[,1:2], X2[,2], X1[,3])
attr(X3,"assign") <- c(0,1,2,3)
colnames(X3)      <- c("Intercept",attr(trms, "term.labels"))
head(X3)

Intercept x1 x2 x3 1 1 -1.28372461 -0.2598796 0.3028496 2 1 0.56880875 0.2803302 0.7593734 3 1 -0.32480770 -1.6705911 -1.1750247 4 1 -1.02761734 -0.1405454 -0.6805033 5 1 0.84218452 -0.1224962 -1.3882420 6 1 0.07221231 0.5587801 -0.9042751

票数 0
EN

Stack Overflow用户

发布于 2018-08-26 02:47:27

我不能完全确定这是否是您想要做的,但是cbind()在这种情况下似乎工作得很好。

代码语言:javascript
复制
X <- cbind(X1, X2)
X <- X[, !duplicated(colnames(X))]

然后,您可以连接来自X1和X2的属性。为了避免重复,您只能从X1中不存在的X2获取赋值信息:

代码语言:javascript
复制
attributes(X)$assign <- c(attr(X1,"assign"), attr(X2,"assign")[!attr(X2,"assign") %in% attr(X1,"assign")])

如果这不是你想让我们知道的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52020120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档