R 如何将离散因子绑定到大型矩阵

R 如何将离散因子绑定到大型矩阵,r,matrix,cbind,R,Matrix,Cbind,我有一个离散因子,长度为79 [1] 4 6 6 4 6 1 6 4 1 6 1 4 6 1 1 1 6 6 6 6 6 4 1 6 6 4 6 6 1 1 6 4 6 1 6 6 4 4 [39] 6 6 4 1 1 4 1 1 6 1 1 6 6 1 1 6 4 1 1 6 1 6 6 1 6 6 6 6 1 1 1 1 6 1 1 1 1 1 [77] 6 6 1 Levels: 1 4 6 我试图将这个离散因子绑定到一个大矩阵中,这个矩阵的维数是:79行乘1921列。我被告知,我的最终

我有一个离散因子,长度为79

[1] 4 6 6 4 6 1 6 4 1 6 1 4 6 1 1 1 6 6 6 6 6 4 1 6 6 4 6 6 1 1 6 4 6 1 6 6 4 4
[39] 6 6 4 1 1 4 1 1 6 1 1 6 6 1 1 6 4 1 1 6 1 6 6 1 6 6 6 6 1 1 1 1 6 1 1 1 1 1
[77] 6 6 1
Levels: 1 4 6
我试图将这个离散因子绑定到一个大矩阵中,这个矩阵的维数是:79行乘1921列。我被告知,我的最终结果应该是原始矩阵,并在其中添加列,但我不确定该如何处理这个问题。提前谢谢

这是我给cbind矩阵系数的代码:

dd1 = mat.x
for(v in levels(X)){
    nv = rep(0, length(X))
    nv[X==v] = 1
    dd1 = cbind(dd1, nv)
}
我收到这个警告信息:

警告信息:

1:在cbind中(dd1,nv):

结果的行数不是向量长度(arg 2)的倍数

2:在cbind中(dd1,nv):

结果的行数不是向量长度(arg 2)的倍数

3:在cbind中(dd1,nv):

结果的行数不是向量长度(arg 2)的倍数


矩阵中的所有元素必须是同一类。改用data.frame或data.table

 data.frame(vec, mat)

我想你的问题只是打字错误。使用样本数据

mat.x <- matrix(1, nrow=17, ncol=4)
X <- factor(sample(c(4,6,10), 17, replace=T))

请注意,我必须将
nv[y==v]=1
更改为
nv[X==v]=1
,因为您没有在问题的任何地方定义
y

没有矩阵。也许是数据帧?矩阵列必须都是相同的
您是否确实尝试了
cbind
?我不明白为什么
mat会起作用,但是分解向量将不再分解。嗨,我编辑了我的原始帖子,加入了警告消息和我运行的代码。你确认
length(X)==nrow(mat.X)
?使用
cbind(mat.X,model.matrix(~X-1))
?当然。我想我只是想弄明白为什么代码不起作用。天哪,你说得对!我现在在踢自己。谢谢
dd1 = mat.x
for(v in levels(X)){
    nv = rep(0, length(X))
    nv[X==v] = 1
    dd1 = cbind(dd1, nv)
}