R: Как я могу исправить свой цикл for, чтобы он умножал каждый элемент строки на соответствующий элемент столбца? - PullRequest
1 голос
/ 24 мая 2019

У меня есть матрица бета с nrow=10 и ncol=10 и вторая матрица данных с nrow=10 и ncol=10.Я хочу умножить столбцы из бета-версии на строки из данных для любого элемента.

Я уже пытался написать цикл for:

solution1 <- matrix(NA,10,10)

for(i in 1:nrow(data)){solution <- matrix(beta*data[i,])}

, но этот выступ показывает мне список из 10раз "нет"

Я не знаю, что я делаю неправильно.Я на самом деле ожидаю матрицу с nrow=10 и ncol=10.Может, у кого-то есть идея и она может помочь?

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Может быть, я должен определить свою проблему немного лучше.Например, у меня есть две матрицы:

A <- matrix(c(1:9), nrow=3, ncol=3)
B <- matrix(c(1:9), nrow=3, ncol=3)

, и если я сделаю

A%*%B

, я получу:

     [,1] [,2] [,3]
[1,]   30   66  102
[2,]   36   81  126
[3,]   42   96  150

, но я хочу, чтобы это выглядело так:

[1,1] 1*1 =1
[1,2] 4*4 = 16
[1,3] 7*7 = 49
[2,1] 2*2 = 4

и т. Д.

0 голосов
/ 24 мая 2019

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

R имеет оператор умножения матриц %*%

solution <- beta %*% data

Прочитав ваше разъяснение, я нашел следующее простое решение. Умножение всех значений поэлементно и затем транспонирование матрицы.

solution <- t(beta*data)

Который выдает следующие результаты

     [,1] [,2] [,3]
[1,]    1    4    9
[2,]   16   25   36
[3,]   49   64   81
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...