R 如何将离散因子绑定到大型矩阵
我有一个离散因子,长度为79R 如何将离散因子绑定到大型矩阵,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列。我被告知,我的最终
[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)
}