0
我有一個問題,在過去的四個小時裏,我無法解決問題,所以我想知道你們中的任何一個人能否幫助我。要看到我的問題,讓我們先從一個例子:R:從矩陣到列表到矩陣:訂單問題
tmp <- matrix(1:24, ncol=2)
fac <- rep(1:5, length.out=12)
基於因子水平fac
,我想一個函數適用於共享相同因子水平的tmp
所有元素。我結束了使用by
,但如果這不合適,請不要猶豫,指出。
new <- by(tmp, fac, function(x) x <- x*sign(rbinom(1,1,.5)-0.5))
這將使每個組乘以1或-1。
現在的問題:我希望最後得到與之前相同的矩陣,即在我的例子中爲tmp
(只是一些觀察組已經與-1相乘)。我曾嘗試以下:
new.tmp <- matrix(unlist(new), ncol=ncol(tmp))
但事實證明,該行的順序被混淆。這是可以理解的,因爲by
命令將我的矩陣強制爲一個數據幀,並根據我的因子獲取數據幀的子集。有沒有辦法把所有東西放在一起,以保持最初的行順序?
請注意,與我的示例矩陣不同,我的實際數據集在列中沒有有序值。
我真的很感激任何幫助!
裏卡多,太感謝你了!這正是我想要的! – coffeinjunky