Предположим, я хочу получить некоторые векторы в виде столбцов матрицы, а затем при определенных условиях 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
каждый раз, когда это может привести к ошибкам (один пример из приведенного выше кода)?