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

如何批量复制并重命名R语言环境中的变量?

问题描述

我已经创建了若干变量,希望复制这些变量,让原变量和带Ireland_前缀的新变量同时存在。例如原变量c_PFS_Folfox <- 307.81,需要生成:

Ireland_c_PFS_Folfox <- 307.81

初始变量定义

1. 本国治疗成本

c_PFS_Folfox <- 307.81
c_PFS_Bevacizumab <- 2580.38  
c_OS_Folfiri <- 326.02  
administration_cost <- 365.00

2. 不良事件(AE)治疗成本(发生时)

c_AE1 <- 2835.89
c_AE2 <- 1458.80
c_AE3 <- 409.03

3. 支付意愿阈值

n_wtp = 45000

失败的尝试

我尝试批量重命名,但结果不符合预期,且新变量未出现在全局环境中:

kk <- data.frame(c_PFS_Folfox, c_PFS_Bevacizumab, c_OS_Folfiri, administration_cost, c_AE1, c_AE2, c_AE3, n_wtp)

colnames(kk) <- paste("Ireland", kk, sep="_")

kk

输出结果:

Ireland_307.81 Ireland_2580.38 Ireland_326.02 Ireland_365 Ireland_2835.89 Ireland_1458.8
1          307.8            2580            326         365            2836           1459
  Ireland_409.03 Ireland_45000
1            409         45000

解决方案

问题根源

你之前的操作存在两个核心问题:

  1. 修改列名时错误使用了变量值(kk是数据框本身,调用时取的是变量值),而非原变量名,导致新列名变成Ireland_加数值,不是预期的前缀加原变量名;
  2. 数据框内的变量仅存在于数据框内部,不会自动同步到全局环境,所以你看不到新变量。

正确实现方法

方法1:列表+list2env批量生成

这是最简洁的批量处理方式:

# 定义需要复制的原变量名向量
var_names <- c("c_PFS_Folfox", "c_PFS_Bevacizumab", "c_OS_Folfiri", 
               "administration_cost", "c_AE1", "c_AE2", "c_AE3", "n_wtp")

# 将目标变量存入列表(保留原变量名)
var_list <- mget(var_names)

# 给列表元素添加Ireland_前缀
names(var_list) <- paste0("Ireland_", names(var_list))

# 将列表中的变量导出到全局环境
list2env(var_list, envir = .GlobalEnv)

方法2:循环+assign逐个创建

如果偏好直观的循环写法,可以用assign函数手动创建每个新变量:

var_names <- c("c_PFS_Folfox", "c_PFS_Bevacizumab", "c_OS_Folfiri", 
               "administration_cost", "c_AE1", "c_AE2", "c_AE3", "n_wtp")

for (name in var_names) {
  # 获取原变量的值
  value <- get(name)
  # 创建带前缀的新变量并写入全局环境
  assign(paste0("Ireland_", name), value, envir = .GlobalEnv)
}

验证结果

执行上述任意方法后,可通过以下方式确认新变量:

# 查看所有带Ireland_前缀的变量
grep("^Ireland_", ls(), value = TRUE)

# 验证单个新变量的值
Ireland_c_PFS_Folfox
# 输出:307.81

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:30:31