2017-09-02 371 views
0

非常簡單的問題,對於像我這樣的新手來說非常困難。r誤差中的算術運算:較長的對象長度不是較短的對象長度的倍數

x <- c(1,2,3,4) 

y <- c(1,2,3) 

對象長度不同。所以我不能表演,讓我們說,z < - x + y

什麼是最好的方法來處理不同物體長度的arithemetic。添加一個0?

+1

*您可以*實施z < - X + Y。較短的矢量元素將被回收。你會得到一個警告,而不是一個錯誤。參見'?算術'。問題是你爲什麼要這麼做? –

回答

2

要做到這一點編程,你可以首先把矢量放在一個命名向量,我們可以運行一個分組功能。

z <- setNames(c(x, y), c(seq_along(x), seq_along(y))) 
# 1 2 3 4 1 2 3 
# 1 2 3 4 1 2 3 

現在我們可以爲和運行分組功能:

unname(tapply(z, names(z), sum)) 
# [1] 2 4 6 4