0

我有一个离散因子,长度为 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 行 x 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)

4

2 回答 2

1

我认为你的问题只是一个错字。使用样本数据

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

此代码有效

dd1 = mat.x
for(v in levels(X)){
    nv = rep(0, length(X))
    nv[X==v] = 1
    dd1 = cbind(dd1, nv)
}

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

于 2014-08-27T20:48:25.820 回答
0

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

 data.frame(vec, mat)
于 2014-08-27T20:28:15.777 回答