这可能是非常明显的,但我一直在努力修复它大约一个小时(我有点像一个初学者):
该函数是表达式的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
提前致谢!
只需使用sum(df$X * df$Y - 284400*(1:nrow(df)))
或者您可以使用dplyr
:
library(dplyr)
df %>%
mutate(value = X * Y - 284400 * row_number()) %>%
summarise(sumvalue = sum(value))
这可能是因为您没有存储中间步骤的结果,因此您只能获得最终计算的结果。
你可以得到总和(使用循环):
# 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))