a <- 3:10
b <- 1:99
c <- sum(b / a)
Warning message:
In b/a : longer object length is not a multiple of shorter object length
c
[1] 892.8333
嗨,我刚开始玩R。 我希望上面提到8个值,但它不会:
(1/3 + 2/3 + … + 99/3) =
(1/4 + 2/4 + … + 99/4) =
…
(1/9 + 2/9 + … + 99/9) =
(1/10 + 2/10 + … + 99/10) =
有什么建议吗?非常感谢你!
答案 0 :(得分:0)
我们可以复制&#39; a&#39;中的每个元素。作为&#39; b&#39;的length
除以&#39; b&#39;,转换为matrix
并获得列总和(colSums
)
colSums(matrix(b/rep(a, each=length(b)), ncol=8))
#[1] 1650.0000 1237.5000 990.0000 825.0000 707.1429 618.7500 550.0000
#[8] 495.0000
或者我们遍历&#39; a&#39;的每个元素,除以&#39;&#39;,然后获取sum
。
sapply(a, function(x) sum(b/x))
#[1] 1650.0000 1237.5000 990.0000 825.0000 707.1429 618.7500 550.0000
#[8] 495.0000
或者简洁的选项是
colSums(outer(b,a, FUN='/'))