2016-08-10 4 views
-2

Ну, я искал много вопросов, но ничего не работает. Вот мой вопрос, мне было предложено создать матрицу, как этотКак создать увеличивающуюся матрицу?

#  [,1] [,2] [,3] [,4] [,5] 
# [1,] 1 2 3 4 5 
# [2,] 2 3 4 5 6 
# [3,] 3 4 5 6 7 
# [4,] 4 5 6 7 8 
# [5,] 5 6 7 8 9 

с помощью функции rep(), matrix() и seq().

Я хочу добавить 1 в каждый повторяющийся цикл в seq(1:5) в 5 раз, но я не знаю, как это сделать. Кто-нибудь поможет мне в этом вопросе?

+0

Покажите нам, что вы пробовали до сих пор (код и вывод). В противном случае люди будут завышать/голосуть-закрыть это сильно из-за отсутствия усилий (* «Дайте мне код» *). – smci

+0

Совет: посмотрите на аргумент 'each'' rep', заметив, что R использует векторную переработку (например, вы можете добавить более длинный вектор к более короткому: 1: 2 + c (0,0, 1,1) ') Как только вы создали последовательность, зажмите ее в матричном вызове – user20650

+1

Другое:' m = matrix (, 5, 5); строка (m) + col (m) -1L' – Frank

ответ

2

спасибо @ пользователь20650! Я, наконец, понял это (извините за не знакомы с функциями стека переполнения в)

Я использую такой код:.

a = matrix(rep((1:5),each = 5),5,5,byrow = TRUE) 
b = matrix(rep((0:4),each = 5),5,5) 
a+b 

И это работает

+1

хорошо сделано ... другим способом с использованием рециркуляции является «матрица (1: 5, ncol = 5, nrow = 5) + rep (0: 4, each = 5) ' – user20650

+0

Поскольку запрос включается с помощью' seq() ', это также может быть опцией:' matrix (rep (seq (5) -1, each = 5) + rep (seq (5), 5), 5) ' , Это то же самое, что решение, предлагаемое @ user20650, написано немного иначе. – RHertel

+0

Ваша 'a' по существу является функцией' row() 'и' b' является 'col()' –

2
n = 5 
r = seq(1,n) 
matrix(rep(r,n),n,n,byrow = T) + r - 1 

или в качестве альтернативы, если вам не нужно использовать установленные функции

n = 5 
r = 1:n 
t(matrix(-1,n,n) + r) + r 
1

Проверить col() и row():

a <- matrix(0, 5, 5) 
col(a) + row(a) - 1 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 1 2 3 4 5 
[2,] 2 3 4 5 6 
[3,] 3 4 5 6 7 
[4,] 4 5 6 7 8 
[5,] 5 6 7 8 9 
Смежные вопросы