在R中使用for循环求和

问题描述 投票:1回答:2

这可能是非常明显的,但我一直在努力修复它大约一个小时(我有点像一个初学者):

该函数是表达式的1:8之和:xi * yi - 284400(i)其中xi和yi来自数据框,其中两列X和Y都是长度为8.我只是想找到数值价值而不必自己计算。

我尝试了下面的代码,但是当使用for循环时,它似乎继续为i分配一个整数值8.我是否错误地使用了for循环?

注意:我创建了一个名为'xvalues'的x列的向量,类似地,y列被称为'yvalues'

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

运行后我继续得到一个空输出,当我打电话给我时,它只给出:

[1] 8

提前致谢!

r math
2个回答
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))

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))
© www.soinside.com 2019 - 2024. All rights reserved.