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

R语言for循环如何将向量元素识别为对象而非字符串

R循环对象识别问题修复方案

你对问题的判断正确,循环变量i存储的是segmente向量里的字符串值,直接使用i会读取字符串本身而非第一步创建的同名tibble对象,调用get()函数即可根据字符串名称获取对应内存对象。

修复后完整代码

library(tibble)
df <- tibble(hallo1 = "test", hallo2.1 = "test", bye1 = "test", bye2.1 = "test")
segmente <- c("hallo", "bye")

for(i in segmente){
  assign(i, df[grepl(i, names(df))]) # 第一步保留原有逻辑
  # 第二步修改:用get(i)获取第一步生成的同名对象,再筛选列
  assign(paste0(i, "_1"), get(i)[!grepl("\\.", names(get(i)))]) 
}

运行后生成的hallo_1和bye_1均为仅含不带.列的tibble:

  • hallo_1仅保留hallo1列
  • bye_1仅保留bye1列

更简洁的优化写法

你也可以把第一步生成的对象存在临时变量里,避免重复调用get(),执行效率更高、逻辑更清晰:

library(tibble)
df <- tibble(hallo1 = "test", hallo2.1 = "test", bye1 = "test", bye2.1 = "test")
segmente <- c("hallo", "bye")

for(i in segmente){
  tmp_df <- df[grepl(i, names(df))]
  assign(i, tmp_df)
  assign(paste0(i, "_1"), tmp_df[!grepl("\\.", names(tmp_df))])
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:15:05