我有以下数学公式,我想在R中尽可能高效地编程。
$ \ sum_ {i = 1} ^ {N}(x_i- \ bar x)(y_i- \ bar y)$
我们假设我们有以下示例数据:
x = c(1,5,7,10,11)
y = c(2,4,8,9,12)
如何在不创建单独功能的情况下轻松获取此数据的总和? 是不是有可以计算这些数学和的包或函数?
答案 0 :(得分:6)
使用sum
命令和向量化操作:sum((x-mean(x))*(y-mean(y)))
这里的关键启示是sum函数只是对参数求和(向量,矩阵等等)。在这种情况下,给它一个向量就足够了,在这种情况下,向量表达式比sum(z)
稍微复杂一些,但请注意(x-mean(x))*(y-mean(y))
求值为z
因此,命令略显华丽的事实并没有真正改变函数的工作方式。在许多地方都是如此,而不仅仅是sum
命令。