强制应用返回矩阵,无论数据尺寸如何

时间:2019-04-23 17:00:39

标签: r matrix vector lapply sapply

假设我想获得一些向量作为矩阵列,然后在某些条件下sapply通过让SIMPLIFY=TRUE来完成这项工作,但是,如果每个输出都是一维数值,那么sapply的输出将简化为数值。有没有办法将其输出为矩阵?

我所做的是一个矩阵,其输出指定了nrow=1

示例:k-均值算法。 如果我们有N列表示的data d维点,nc个簇数和belonging一个N维向量,表示簇中心更接近每个数据点,然后通过以这种方式找到更接近每个聚类的点的平均值来更新聚类中心

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

虽然有效,但我不知道是否有更好的解决方法。 更一般地说,我发现烦人的R中从矩阵到向量的转换,是否有任何方法可以防止这种情况的发生,或者我应该每次使用参数drop都可能导致错误时使用(上面代码中的一个示例) )?

0 个答案:

没有答案