我有一個向量。總和不使用循環在R
basket <- c(4,5,10,102,10);
如果我來總結,我可以打電話給
sum(basket)
如果我用for循環找出總和,
total <- 0; len <- length(basket); for(i in 1:len) {total <- total + basket[i]}
有沒有一種方法,我可以找到總數,而不使用sum(),或使用這個冗長的循環結構?
我有一個向量。總和不使用循環在R
basket <- c(4,5,10,102,10);
如果我來總結,我可以打電話給
sum(basket)
如果我用for循環找出總和,
total <- 0; len <- length(basket); for(i in 1:len) {total <- total + basket[i]}
有沒有一種方法,我可以找到總數,而不使用sum(),或使用這個冗長的循環結構?
add <- function(x) Reduce("+", x)
add(basket)
或寫一個較短的循環:
s <- 0
for(a in basket) s<- s+a
感謝您的新功能!我需要擺脫這種循環索引的習慣...... :) –
在使用循環時,分配給「s」將返回NULL。所以第二行應該是「for(a in basket)s
沒錯。確認編輯 –
在R中求和真的很快。這種基本操作不需要使用for循環。 你可以在這裏找到一個C++循環,R循環和R sum函數之間的小基準:http://adv-r.had.co.nz/Rcpp.html(參見「矢量輸入,標量輸出」部分)
謝謝!其實,我只是想了解更多關於R的知識,特別是矢量化,循環以及應用函數的不同方式。所以只是儘量推動:) –
只是好奇 - 爲什麼你不想用sum ? –
瞭解是否有更好/更快的做事;特別是瞭解更多關於矢量化的內容,因爲我習慣於「for/while」循環... –
但是sum = + ...我沒有明白。循環也不是矢量化操作。例如「+」是矢量化的。 – Sotos