Принудительно вернуть матрицу независимо от размера данных - PullRequest
0 голосов
/ 23 апреля 2019

Предположим, я хочу получить некоторые векторы в виде столбцов матрицы, а затем при определенных условиях sapply выполняет свою работу, пропуская SIMPLIFY=TRUE, однако, если каждый вывод представляет собой одномерное числовое значение, то вывод sapply будет упрощен до числового значения.,Есть ли способ вывести его в виде матрицы?

То, что я сделал, это матрица с выходным параметром sapply, задающим nrow=1.

Пример: алгоритм k-средних.Если у нас есть N d-мерные точки, представленные data столбцами, nc количеством кластеров и belonging N-мерным вектором, который указывает центр кластера, который находится ближе к каждой точке данных, то мы обновляемцентры кластеров, находя среднее значение точек ближе к каждому кластеру таким образом

new_centers <- matrix(sapply(1:nc, function(i) rowMeans(data[,which(belonging==i),drop=FALSE])),nrow=d)

Хотя это работает, я не знаю, есть ли лучший обходной путь для этого.Более того, я нахожу раздражающим преобразование матриц в векторы в R, есть ли способ предотвратить это или я должен использовать аргумент drop каждый раз, когда это может привести к ошибкам (один пример из приведенного выше кода)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...