2017-06-29 46 views
0

單獨矢量我想在兩個方向R.薩姆歸一化的兩個方向

例如分別總結歸一化的矢量,用於在經過了矢量3,4,5,6,10,9,8,7歸一化0.3,0.4,0.5,0.6,1.0,0.9,0.8,0.7。我想分別在左邊和右邊求和值< 1,並找出它們的差別。在這種情況下,它將被保留= 0.3 + 0.4 + 0.5 + 0.6 = 1.8,右= 0.9 + 0.8 + 0.7 = 2.4。差值將右減左等於0.6。

下面是我的一些想法:

a <- c(3,4,5,6,10,9,8,7) 
norm <- a/max(a) # normalization 
left <- sum(a[1:which.max(a)-1]) # left sum 
right <- sum(a[which.max(a)+1:length(a)]) # right sum 
diff <- right-left 

任何改進的建議?

+0

也許'減少(「 - 」,tapply( (c(TRUE,(a == max(a))[ - 1])),FUN = sum))' – akrun

+0

'0.3 + 0.4 + 0.5 + 0.6' ] 1.8' – akrun

+0

很好找我的數學錯誤。哈哈。 – Jian

回答

0

我們可以使用rleid獲得分組變量,獲得各組(「IND」)的「規範」的sum並獲得差異

library(data.table) 
ind <- rleid(norm<1) 
diff(as.numeric(tapply(norm[ind!=2], ind[ind!=2], FUN = sum))) 
#[1] 0.6