【发布时间】:2014-12-31 01:46:31
【问题描述】:
我正在尝试在 R 中生成一个稀疏矩阵来表示一些虚拟编码变量。因此,矩阵每行应该恰好有一个“1”(所有其他值都为零)。所以,是这样的:
0 0 1 0
1 0 0 0
0 1 0 0
0 0 0 1
有没有合理的方法来生成这样的矩阵?我能想到的最好的办法是创建代表每条可能线的 j 向量,然后从中采样;但这似乎有点笨拙。有更好的建议吗?
编辑:这是我最终所做的;确实是从向量列表中采样的。我想,下面的解决方案非常出色,尤其是在缩放方面。
matrix(unlist(sample(list(c(1, 0, 0, 0), c(0, 1, 0, 0), c(0, 0, 1, 0), c(0, 0, 0, 1)),
size=93, replace=TRUE)), 93, 4, byrow=TRUE)
【问题讨论】:
-
我希望您知道,如果您将
factor变量传递给 R 中的许多模型函数,它们会为您执行虚拟编码。 -
也许另一个选择:
diag(1, 4, 4)除非你需要随机位置的 1 -
@beginneR 是的,我想我应该明确表示 - 需要随机化。
标签: r matrix sparse-matrix