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

R语言:以固定列为因变量批量生成多自变量R²统计表

动态计算因变量A与所有自变量的回归R²值

假设你有一个结构动态变化的data.frame,仅列A固定为因变量,其余列为自变量,需要自动遍历所有自变量,计算每个与A做简单线性回归后的R²值,并生成统计表。

示例数据

df <- data.frame(
  'A' = runif(20,min=0, max=100),
  'B' = runif(20,min=0, max=100),
  'C' = runif(20,min=0, max=100),
  'D' = runif(20,min=0, max=100),
  'E' = runif(20,min=0, max=100)
)

已定义的R²计算函数

rsq <- function(x, y) summary(lm(y~x,na.action = na.omit))$r.squared

期望输出格式

A~B         A~C         A~D         A~E 
1 0.009213715 0.009213715 0.009213715 0.009213715 

问题痛点

硬编码方式(手动指定每个自变量)无法适配列名、列数动态变化的场景,需要自动化的遍历方案。


解决方案

方法1:基础R实现(sapply)

利用sapply遍历除A外的所有列,自动计算R²并整理成目标格式:

# 筛选出所有自变量列(除A外)
predictors <- df[, !names(df) %in% "A"]

# 遍历计算每个自变量与A的R²,得到命名向量
r2_vec <- sapply(predictors, function(col) rsq(col, df$A))

# 转换为一行的data.frame,并设置列名
r2_df <- as.data.frame(t(r2_vec))
colnames(r2_df) <- paste0("A~", names(r2_vec))

# 查看结果
r2_df

方法2:tidyverse风格实现(purrr)

如果你习惯使用tidyverse工具链,可以用purrr的map_dfc更简洁地完成:

library(purrr)
library(dplyr)

r2_df <- df %>%
  select(-A) %>%  # 移除因变量列,保留所有自变量
  map_dfc(~rsq(.x, df$A)) %>%  # 遍历计算R²并合并为data.frame
  set_names(paste0("A~", names(.)))  # 设置列名格式

r2_df

两种方法都能自动适配data.frame的动态变化,只要列A存在,就会自动遍历其余所有列完成计算,无需手动修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:45:45