/ / Podział elementu macierzy w R - r

Podział elementu macierzy w R - r

Mam matrycę:

zamknij close.1 close.2 1 38.050 22.320 23,155 2 37,650 22,150 23,055 3 37,952 22,090 23,090

I chciałbym podzielić "zamknij" przez "zamknij 1", "zamknij" przez "zamknij 2" i na końcu "zamknij 1" przez "zamknij 2" dla każdego rzędu.

Jestem świadomy, że mogę napisać okropnie wyglądającą pętlę, która rozwiązałaby to, ale byłbym naprawdę wdzięczny, gdyby wiedział, czy był prosty sposób na zrobienie tego w R?

Każda pomoc będzie bardzo ceniona.

Dzięki.

Odpowiedzi:

3 dla odpowiedzi № 1

To, co faktycznie tam masz, to ramka danych. Jest to w istocie macierz, masz rację, ale dostęp do kolumn odbywa się za pomocą nazw kolumn.

Dostęp do każdej kolumny ramki danych można wykonać za pomocą następującego polecenia:

Matrix$close

To powinno dać ci pożądaną ramkę danych, jeśli dobrze zrozumiałem twoje pytanie.

New_DataFrame <- data.frame(close = Matrix$close / (Matrix$close.1 * Matrix$close.2), close.1 = Matrix$close.1 / Matrix$close.2)

Te operacje są wykonywane w odniesieniu do każdego pojedynczego wiersza.

Jeśli chcesz otrzymać odpowiedź w postaci macierzy zamiast ramki danych, użyj tego:

New_Matrix <- data.matrix(New_DataFrame)

A powrót do ramki danych z macierzy jest tak prosty jak:

New_DataFrame <- data.frame(New_Matrix)

Mam nadzieję, że pomaga!


2 dla odpowiedzi nr 2

Gdyby mat to jest twoja matryca mat[,1]/mat[,2] daje elementarny podział każdego rzędu. Gdyby mat w rzeczywistości jest to data.frame, a nie matryca, to powyższe działa tak, jak robi mat$close/mat$close.1.


0 dla odpowiedzi № 3
> combn(1:3, 2)
[,1] [,2] [,3]
[1,]    1    1    2
[2,]    2    3    3
> apply(combn(1:3, 2), 2, function(x) mat[, x[1]]/mat[,x[2]] )