我有以下数学公式,我想在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)
Run Code Online (Sandbox Code Playgroud)
如何在不创建单独功能的情况下轻松获得此数据的总和?是否有可以计算这些数学和的包或函数?
使用sum
命令和矢量化操作:sum((x-mean(x))*(y-mean(y)))
这里的关键启示是sum函数只是对参数(向量,矩阵,等等)求和.在这种情况下,给它一个向量就足够了,在这种情况下,向量表达式稍微复杂一点sum(z)
,但注意到的是(x-mean(x))*(y-mean(y))
求值z
,所以命令稍微华丽的事实并没有真正改变函数的方式作品.在许多地方都是如此,而不仅仅是sum
命令.