我有一个巨大的矩阵,我需要将它的每一列除以它的和(如果它不为零)。我使用了一个循环,但由于矩阵非常大,它需要很长的时间来完成。
sum_D<- colSums(R_t)
for(i in 1:NR){
if(sum_D[i]>0){
R_t[,i]<-c(as.numeric(R_t[,i])/sum_D[i])
}
}
那么我写了这段代码,但它的结果不是矩阵。
matrixp<- apply(X=R_1, MARGIN=2, FUN=ColpSum)
ColpSum<-function(x){
x<-as.matrix(x)
if(colSums(x)==0){
return(0)
}
else{
return(x/colSums(x))
}
}
我怎样才能解决这个问题呢?
例如:
|1|2|3|4|
|:----|:----|:----|:----|
|2|0|0|0|
|0|1|0|0|
|0|1|0|0|
结果:
|1|2|3|4|
|:----|:----|:----|:----|
|1|0|0|0|
|0|0.5|0|0|
|0|0.5|0|0|
4条答案
按热度按时间slwdgvem1#
数据:
基R方法:
数据框架法:
myss37ts2#
xxe27gdn3#
我将使用
sweep()
,然后替换NA,即数据
z31licg04#
如果
m
是您矩阵: