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

R语言实现数据框多列同时批量取倒数的通用方法

R数据框批量对多列取倒数的通用方法

你不需要逐列写赋值语句,以下几种方案都可以实现一次性对l3到l5列取倒数,只需要修改目标列参数即可复用到其他类似场景:

  • base R 无依赖方案
    不需要安装任何第三方包,兼容性最强,适合所有R环境:
# 先定义要处理的目标列,支持列名、列位置索引两种写法
# 写法1:指定列名
target_cols <- c("l3", "l4", "l5")
# 写法2:连续列用位置索引,示例中l3是第4列、l5是第6列,可直接写 target_cols <- 4:6

# 批量计算倒数并赋值回原数据框
df[target_cols] <- lapply(df[target_cols], function(col) 1 / col)
  • dplyr 简洁写法(适配tidyverse工作流)
    如果日常用tidyverse生态的函数,用across可以更灵活地选择列,支持连续列缩写、按条件选列等规则:
library(dplyr)

df <- df %>%
  mutate(
    # l3:l5 直接选中从l3到l5的所有连续列
    across(l3:l5, ~ 1 / .x)
  )

# 其他选列规则参考:
# 非连续列:across(c(l2, l4, l7), ~1/.x)
# 所有数值型列:across(where(is.numeric), ~1/.x)
  • data.table 高性能方案(适合大数据量场景)
    处理百万行以上级别的大表时,data.table的原地赋值写法速度更快、内存占用更低:
library(data.table)
setDT(df)

# 批量更新目标列,不生成多余数据副本
df[, (l3:l5) := lapply(.SD, function(col) 1/col), .SDcols = l3:l5]

校验方式:运行完代码后可执行head(df)查看结果,原l3-l5列的1-10序列会被替换为对应的倒数值。

内容的提问来源于stack exchange,提问作者RPlotter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:51:34