You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame每行最大值替换为预先计算的自定义值

替换数据框每行最大值为向上取整值的简化方案

以下是几种比你现有代码更简洁高效的实现方式:

Base R 简洁实现

无需拆分步骤,通过矩阵索引直接完成替换:

# 生成每行最大值的位置索引矩阵
max_pos <- cbind(seq(nrow(DF)), apply(DF, 1, which.max))
# 直接替换对应位置的值为其向上取整结果
DF[max_pos] <- ceiling(DF[max_pos])

Tidyverse 风格实现

如果偏好dplyr的管道语法,可以这样写:

library(dplyr)

DF <- DF %>%
  rowwise() %>%
  mutate(
    across(everything(), 
           ~ ifelse(.x == max(c_across(everything())), ceiling(.x), .x))
  ) %>%
  ungroup()

高效批量处理(matrixStats包)

针对大数据量场景,matrixStats的rowMaxs能快速计算每行最大值,再批量替换:

library(matrixStats)

row_maxes <- rowMaxs(as.matrix(DF))
# 匹配每行最大值并替换
DF[DF == row_maxes] <- ceiling(row_maxes)

这些方法都省去了单独存储索引和循环计算的步骤,代码更简洁,可读性和执行效率也更高。

内容的提问来源于stack exchange,提问作者Nadiine El Nino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:55:28