R语言不使用for循环计算累加和的正确实现方法求助
R语言无for循环实现目标双重求和的修正方案
原代码错误原因
- 直接对i、j向量执行逐元素运算,只会按向量位置一一对应计算,不会遍历所有i、j的组合,不符合双重求和的运算逻辑
- 长度不一致的向量运算时R会自动循环补齐短向量,最终计算的项和目标公式要求完全不符
正确实现代码
使用outer()函数生成所有i、j组合的运算结果后直接求和,全程无for循环:
i <- 1:10 j <- 1:5 # outer遍历所有i,j配对计算,sum直接对全矩阵求和得到最终结果 result <- sum(outer(i, j, FUN = function(x, y) x^5/(10 + y^x)))
实现逻辑说明
outer(X, Y, FUN)会将X的每一个元素与Y的每一个元素两两配对,传入自定义函数做运算,返回维度为length(X) × length(Y)的结果矩阵,再调用sum()对矩阵所有元素求和,即可得到目标公式的双重求和结果。
内容的提问来源于stack exchange,提问作者cornermountain
相关产品推荐
相关产品推荐

