假设我想获得一些向量作为矩阵列,然后在某些条件下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
都可能导致错误时使用(上面代码中的一个示例) )?