在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
在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
這是你在找什麼:
apply(U, 2, function(c_i) { c_i + min(c_i)*sign(min(c_i))*1.05 })
我知道你問的答案對於apply
,不過,我想我會包括另一種方法可能是稍快。
library(matrixStats)
U + abs(colMins(U))[col(U)] * 1.05
@Sam迪克森,感謝指出abs(min(c_i))
相同min(c_i)*sign(min(c_i))
感謝您的選擇。絕對值得一看。 – ben
我想你一個很好的第一步是編寫一個輸入向量(你的矩陣的列)的函數,以您想要的方式輸出矢量。然後你可以使用'apply(U,2,yourfunction)'將它應用到矩陣中的每個向量上。 – Carl
'min(c_i)* sign(min(c_i))'與abs(min(c_i))'是否相同? –
@SamDickson良好的通話。出於提高效率的原因,使用'abs'要好得多,因爲它避免了額外的'min'調用。 –