在R中不使用循环求和

时间:2016-11-13 08:42:29

标签: r vectorization

我是一个载体。

total <- 0; len <- length(basket); for(i in 1:len) {total <- total + basket[i]}

如果我要求和,我可以打电话

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

如果我使用for循环查找总和,

    <ComboBox x:Name="NodeCategoriesCombobox">

<i:Interaction.Triggers>
            <i:EventTrigger EventName="SelectionChanged">
                <i:InvokeCommandAction Command="{Binding UpdateNodeCategoryCommand}" CommandParameter="{Binding ElementName=NodeCategoriesCombobox, Path=SelectedValue}"/>
            </i:EventTrigger>
         </i:Interaction.Triggers>
</ComboBox>

有没有一种方法可以找到总计,不使用sum(),或者使用这个冗长的循环结构?

3 个答案:

答案 0 :(得分:2)

R中的总和非常快。对于这样的基本操作,不需要使用for循环。 你可以在这里找到一个C ++循环,R循环和R和函数之间的小基准:http://adv-r.had.co.nz/Rcpp.html(参见“向量输入,标量输出”部分)

答案 1 :(得分:1)

sum,它对向量的元素求和,Reduce,它将一个函数应用于向量的元素,以便保持和修改一种运行状态在每次通话时,然后返回结果。

(很遗憾,我不会在R中编程,因此我无法告诉您如何使用它们,但这些是现代语言中的常用功能。)

答案 2 :(得分:1)

add <- function(x) Reduce("+", x)
add(basket)

或写一个更短的循环:

s <- 0
for(a in basket) s<- s+a