算术:不同的对象长度

时间:2016-02-09 09:30:19

标签: r

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) =

有什么建议吗?非常感谢你!

1 个答案:

答案 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='/'))