Имею матрицу (32Х48).
Как преобразовать матрицу в одномерный массив?
Либо прочитайте его с помощью 'scan', либо просто выполните as.vector () на матрице. Вы можете сначала транспонировать матрицу, если хотите, по строкам или столбцам.
> 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
пытаться 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
Если мы говорим о data.frame, то вы должны спросить себя, являются ли переменные одного типа? Если это так, вы можете использовать rapply или unlist, поскольку data.frames - это списки, глубоко в их душах ...
источник
array(A)
илиarray(t(A))
даст вам 1-мерный массив.источник
From
?matrix
: «Матрица - это частный случай двумерного« массива »». Вы можете просто изменить размеры матрицы / массива.источник
Может быть, уже так поздно, но вот мой способ конвертировать Matrix в вектор:
надеюсь, что это поможет
источник
вы можете использовать
as.vector()
. Похоже, это самый быстрый метод согласно моему небольшому тесту, а именно:Первое решение использует
as.vector()
, второе использует тот факт, что матрица хранится в виде непрерывного массива в памяти иlength(m)
дает количество элементов в матрицеm
. Третий экземпляр создает экземплярarray
fromx
, а четвертый использует функцию конкатенацииc()
. Я также попыталсяunmatrix
сgdata
, но это слишком медленно , чтобы упомянуть здесь.Вот некоторые из полученных мной численных результатов:
Сглаживание матрицы - обычная операция в машинном обучении, где матрица может представлять параметры для изучения, но при этом используется алгоритм оптимизации из общей библиотеки, которая ожидает вектор параметров. Поэтому обычно матрицу (или матрицы) преобразуют в такой вектор. Это дело со стандартной функцией R
optim()
.источник
Вы можете использовать решение Джошуа, но я думаю, вам нужно
Elts_int <- as.matrix(tmp_int)
Или для петель:
z - 1d-вектор.
источник
Просто и быстро, поскольку 1d-массив по сути является вектором
источник
Если вместо этого у вас был data.frame (df) с несколькими столбцами, и вы хотите векторизовать, вы можете сделать
as.matrix (df, ncol = 1)
источник