r - 如果满足条件,则更改数据框的值,否则保持不变
问题描述
我有一个 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_df[j,i]
保持不变。my.mat[j,i]
我删除了一些错误,因此代码将运行:
set.seed(42)
my.mat <- matrix(sample(0:9, 6), 2, 3)
my_df <- as.data.frame(my.mat)
my.vec <- 1:3
my_df[my.mat == 0]
#[1] 0
for(j in 1:nrow(my.mat)) {
for(i in 1:ncol(my.mat)) {
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_df[1:3][my.mat == 0]
#[1] 0
推荐阅读
- java - Bouncy Castle 文件加密 open() 方法
- php - PHP MYSQL 插入类别树
- aws-lambda - 如果在 AWS lambda 函数中运行的测试用例失败,如何获取电子邮件
- php - 如何在 jpgraph 中为 x 轴上的累积条添加标签
- git - Git:如何在不丢失当前提交的情况下指向先前的提交?
- c# - 具有自定义列名的同一个表的 ForeignKey
- ios - MFMessageComposeViewController.canSendSubject() 什么时候返回 false?
- hadoop - 将日志文件从边缘节点摄取到 Hadoop
- javascript - 带有渲染器的 Angular 2+ CSS 自定义属性(变量)
- ethereum - 为什么我的以太坊区块编号为 0,即使同步已接近完成?