这可能是非常明显的,但是我一直在尝试修复约一个小时而没有成功(我是个初学者):
该函数是表达式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
谢谢!
答案 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))