【发布时间】:2021-09-28 19:28:02
【问题描述】:
我有一个 df ( my_df : n by m ) 和一个矩阵 ( my_mat : n by m 再次)。
如果 my_mat[j,i] 不为零,我想更改 my_df[j,i] 的值,如果 my_mat[j,i] 为零,则保持原样。
然后我想在 grp 列中返回包含该行中最大值的 my_df 列的索引。
for(j in 1:nrow(my_df)){
for(i in 1:nclo(my_df){
if(my.mat[j,i]!=0)
{my.df[j,i] <- (my.mat[j,i])/(crossprod(my.vec,my.mat[j,]))
}
my.df$grp[j] <- which.max(my.df[j,])
}
}
我注意到,如果 my.mat[j,i] 为零,我的代码不会保持 my.df[j,i] 不变。我该如何解决?
【问题讨论】:
-
也许把
my.mat[j,i]!=0的部分改成!all.equal(my.mat[j,i], 0) -
@GKi ,不幸的是,它没有完成这项工作。 :(
-
可能是因为您使用了一个
my.df和另一个my_df。此外还有一些其他的语法错误。 -
@GKi,感谢您指出这一点,但实际上我在这里用更简单的版本重写了我的代码。这里只是一个错字,但不是我的实际代码。
标签: r dataframe for-loop matrix