在R中使用for循环求和

时间:2019-04-01 12:06:58

标签: r math

这可能是非常明显的,但是我一直在尝试修复约一个小时而没有成功(我是个初学者):

该函数是表达式1:8的总和:xi * yi-284400(i),其中xi和yi来自具有X和Y两列且长度均为8的数据帧。无需自己计算即可找到数值。

我尝试了以下代码,但是在使用for循环时,似乎一直为我分配了8的整数。我是否错误地使用了for循环?

注意:我制作了x列的向量“ xvalues”,类似地,y列也称为“ yvalues”

for(i in 1:8){
    sum((xvalues[i]*yvalues[i])-284400*(i))
    }

运行此命令后,我一直得到一个空输出,当我调用i时,它只会给出:

[1] 8

谢谢!

2 个答案:

答案 0 :(得分:1)

这可能是因为您没有存储中间步骤的结果,所以只能得到最终计算的结果。

您可以通过以下方式获得总计(使用循环):

# Initialize variable with the sum 
my.sum = 0
for(i in 1:8){
    current = (xvalues[i]*yvalues[i])-284400*(i)
    # Update variable storing sum
    my.sum = my.sum + current
}
> my.sum

或者,您可以使用以下方式对计算进行矢量化:

i = 1:8
sum((xvalues[i]*yvalues[i])-284400*(i))

答案 1 :(得分:1)

只需使用sum(df$X * df$Y - 284400*(1:nrow(df)))

或者您可以使用dplyr

library(dplyr)
df %>%
  mutate(value = X * Y - 284400 * row_number()) %>%
  summarise(sumvalue = sum(value))