我想在R中生成一個稀疏矩陣來表示一些虛擬編碼的變量。因此,矩陣每行應該只有一個'1'(所有其他值爲零)。所以,這樣的事情:R:生成每行只有一個值的稀疏矩陣(虛擬編碼)
0 0 1 0
1 0 0 0
0 1 0 0
0 0 0 1
是否有合理的方式來產生這樣一個矩陣?我能想到的最好的方法是創建代表每個可能行的向量,然後從這些向量中抽樣;但是這似乎有點遺憾。有更好的建議嗎?
編輯:這是我最終做的;確實是從矢量列表中抽取的。我猜,下面的解決方案更好,特別是縮放。
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中的許多模型功能爲你做的假人編碼。 – Roland 2014-11-04 08:31:23
也許另一種選擇:'diag(1,4,4)',除非你需要隨機位置上的1。 – 2014-11-04 09:11:59
@ beginneR是的,我猜應該明確地說 - 需要隨機化。 – simoncolumbus 2014-11-04 23:10:02