2015-12-02 19 views
1

在R中,如何使用apply算術函數?例如,給定一個m乘n矩陣U,與列C_1,C_2,...,C_N,我想在每一列C_I執行以下操作:如何使用apply()與算術函數(R)

每個元u在C_I,

u<-u+min(c_i)*sign(min(c_i))*1.05 
+0

我想你一個很好的第一步是編寫一個輸入向量(你的矩陣的列)的函數,以您想要的方式輸出矢量。然後你可以使用'apply(U,2,yourfunction)'將它應用到矩陣中的每個向量上。 – Carl

+2

'min(c_i)* sign(min(c_i))'與abs(min(c_i))'是否相同? –

+0

@SamDickson良好的通話。出於提高效率的原因,使用'abs'要好得多,因爲它避免了額外的'min'調用。 –

回答

1

這是你在找什麼:

apply(U, 2, function(c_i) { c_i + min(c_i)*sign(min(c_i))*1.05 }) 
0

我知道你問的答案對於apply,不過,我想我會包括另一種方法可能是稍快。

library(matrixStats) 
U + abs(colMins(U))[col(U)] * 1.05 

@Sam迪克森,感謝指出abs(min(c_i))相同min(c_i)*sign(min(c_i))

+0

感謝您的選擇。絕對值得一看。 – ben

相關問題