我有一个矩阵,我试图在行末尾添加一列,然后将行除以行总和,条件是行总和大于100.这就是我所拥有的远:
row.sums <- rowSums(a)
a <- cbind(a, row.sums)
这给了我想要的初始矩阵,最后一列有行和。以下代码是我在第二步中尝试的代码:
a[(a[,dim(a)]>100)] <- dtm/row.sums
这给了我一个错误,说我要替换的向量的大小与我想要替换它的向量不匹配。我在这做错了什么?对不起,如果这是一个非常基本的问题,我对R /编码一般都很新。
答案 0 :(得分:0)
这可能有点冗长的解决方案,但它确实有效。
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)