Mam matrycę (32X48).
Jak mogę przekształcić macierz w jednowymiarową tablicę?
Wczytaj go za pomocą 'scan' lub po prostu zrób jak .vector () na macierzy. Możesz najpierw przetransponować macierz, jeśli chcesz, aby była to wiersze lub kolumny.
> m=matrix(1:12,3,4)
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> as.vector(m)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
> as.vector(t(m))
[1] 1 4 7 10 2 5 8 11 3 6 9 12
próbować c()
x = matrix(1:9, ncol = 3)
x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
c(x)
[1] 1 2 3 4 5 6 7 8 9
Jeśli mówimy o data.frame, to należy zadać sobie pytanie, czy zmienne są tego samego typu? Jeśli tak jest, możesz użyć rapply lub unlist, ponieważ data.frames to listy głęboko w ich duszach ...
źródło
array(A)
lubarray(t(A))
poda tablicę 1-d.źródło
Od
?matrix
: „Macierz to szczególny przypadek dwuwymiarowej 'tablicy'.” Możesz po prostu zmienić wymiary macierzy / tablicy.źródło
Może być już tak późno, w każdym razie oto mój sposób na konwersję Matrixa na wektor:
mam nadzieję, że to pomoże
źródło
możesz użyć
as.vector()
. Wygląda na to, że jest to najszybsza metoda według mojego małego testu porównawczego:Pierwsze rozwiązanie wykorzystuje
as.vector()
, drugie wykorzystuje fakt, że macierz jest przechowywana jako ciągła tablica w pamięci ilength(m)
podaje liczbę elementów w macierzym
. Trzeci tworzy wystąpieniearray
fromx
, a czwarty używa funkcji konkatenacjic()
. Próbowałem teżunmatrix
zgdata
, ale jest zbyt wolny, aby o nim tutaj mówić.Oto niektóre z uzyskanych przeze mnie wyników liczbowych:
Spłaszczanie macierzy jest powszechną operacją w uczeniu maszynowym, gdzie macierz może reprezentować parametry do nauczenia, ale używa się algorytmu optymalizacji z biblioteki ogólnej, która oczekuje wektora parametrów. Dlatego często przekształca się macierz (lub macierze) w taki wektor. Jest to miejsce w przypadku standardowych funkcji R
optim()
.źródło
Możesz użyć rozwiązania Joshuy, ale myślę, że potrzebujesz
Elts_int <- as.matrix(tmp_int)
Lub dla pętli:
z jest wektorem 1d.
źródło
Proste i szybkie, ponieważ tablica 1d jest zasadniczo wektorem
źródło
Jeśli zamiast tego masz plik data.frame (df), który ma wiele kolumn i chcesz wektoryzować, możesz to zrobić
as.matrix (df, ncol = 1)
źródło