Мне нравится тот факт, что с помощью numpy в Python очень легко определить матрицу/массив способом, очень близким к математическому определению. Есть ли у R аналогичный способ достижения этого результата?
import numpy as np
n = np.arange(4)
m = np.arange(6)
## Now I will define the matrix N_mat[i,j]=m[i]*n[j] with 6 rows
## and 4 columns
N_mat = m[:,np.newaxis]*n[np.newaxis,:]
Вероятно вы ищете outer
n <- seq_len(4) - 1
m <- seq_len(6) - 1
N_mat <- outer(m, n)
где
> N_mat
[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 1 2 3
[3,] 0 2 4 6
[4,] 0 3 6 9
[5,] 0 4 8 12
[6,] 0 5 10 15
@BenBolker Это уже существует (только с поправкой на индексацию R на основе 1): help("sequence")
@ larry77 Larry77 Просто примечание: в Python/Numpy вы также можете написать np.outer(m, n)
(вместо m[:,np.newaxis]*n[np.newaxis,:]
)
вы могли бы даже сделать
arange <- function(n) seq(0, n-1)
(это не обладает полной гибкостьюnumpy.arange
, но подойдет, если вы просто хотите, чтобы этот фрагмент кода выглядел более как на Python