有没有一种惯用的方法可以将R中两个骰子的总和计算为矩阵?
这是我正在寻求的输出:
[1] [2] [3] [4] [5] [6]
[1] 2 3 4 5 6 7
[2] 3 4 5 6 7 8
[3] 4 5 6 7 8 9
[4] 5 6 7 8 9 10
[5] 6 7 8 9 10 11
[6] 7 8 9 10 11 12
外部函数是为获取两个向量的外积而设计的,但您可以将函数切换到"+"。
outer(1:6, 1:6, "+")
除了outer
之外的另一个基本R选项,使用replicate
r <- t(replicate(6,1:6))+1:6
或
r <- (u <- replicate(6,1:6)) + t(u)
使得
> r
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 2 3 4 5 6 7
[2,] 3 4 5 6 7 8
[3,] 4 5 6 7 8 9
[4,] 5 6 7 8 9 10
[5,] 6 7 8 9 10 11
[6,] 7 8 9 10 11 12
sapply(seq(6), "+", seq(6))
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 2 3 4 5 6 7
#[2,] 3 4 5 6 7 8
#[3,] 4 5 6 7 8 9
#[4,] 5 6 7 8 9 10
#[5,] 6 7 8 9 10 11
#[6,] 7 8 9 10 11 12