繁体   English   中英

如何将行除以行总和和矩阵中满足特定条件(行总和> 100)的行?

[英]How do I divide rows by the row sum and rows that meet a certain condition (row Sum >100)in matrix?r

我有一个矩阵,我尝试在行总和的末尾添加一列,然后将行除以行总和,条件是行总和大于100。这是我到目前为止的结果:

row.sums <- rowSums(a)
a <- cbind(a, row.sums)

这给了我想要的初始矩阵,在Sums行的末尾有一列。 以下代码是我尝试第二步的代码:

a[(a[,dim(a)]>100)] <- dtm/row.sums

这给我一个错误,说我要替换的向量的大小与我要替换的向量不匹配。 我在这里做错了什么? 抱歉,如果这是一个非常基本的问题,我通常对R /编码还很陌生。

这可能是一个冗长的解决方案,但它可以工作。

df <- cbind(df, rowSums(df))
a <- df[, dim(df)[2]]

for(i in 1:length(a))
{
  if(a[i] > 100)
  {
   df[i, ] <- df[i, ]/a
   }  
 }


#> df
#        [,1]  [,2]      [,3]  [,4]      [,5]  [,6]     [,7]
# x 0.03333333 0.050 0.1000000 0.100 0.1666667 0.375 1.000000
# y 0.06666667 0.075 0.1333333 0.125 0.2000000 0.500 1.333333

数据

x <- c(100,200,300,400,500)
y <- c(200,300,400, 500, 600)
df <- rbind(x, y)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM