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

在R语言中通过循环调用函数并存储igraph对象的问题

嘿,我来帮你搞定这个问题!你遇到的object 'g' not found错误,核心问题是循环里每次都把readFn(i)的结果覆盖到同一个g变量上——如果某次调用函数返回异常,最后g就可能不存在;就算没报错,你最后也只能拿到最后一个文件对应的图,没法保留两个结果。另外你想要生成g_345和g_456这样的命名对象,这里有两种靠谱的方案:

方案1:用列表存储(推荐)

这种方式更符合R的编程习惯,后续批量处理这些igraph对象也更方便,不会把全局环境搞得乱糟糟:

files <- c("345","456")
# 先初始化一个空列表
graph_list <- list()

for(i in files){
  # 把每个文件对应的图存入列表,用文件名作为列表元素的名字
  graph_list[[i]] <- readFn(i)
}

# 之后可以通过名字直接访问对应的图
graph_list[["345"]]
graph_list[["456"]]
方案2:直接创建命名对象

如果你一定要生成g_345和g_456这种独立变量,可以用R的assign()函数,它能在全局环境里创建指定名字的变量:

files <- c("345","456")

for(i in files){
  # 构造目标变量名,比如拼接成"g_345"
  var_name <- paste0("g_", i)
  # 创建这个变量并赋值为readFn的返回结果
  assign(var_name, readFn(i))
}

# 现在你就能直接使用g_345和g_456了
g_345
g_456

额外小提示

  1. 先单独测试你的readFn函数,比如运行readFn("345"),确认它确实能返回有效的igraph对象,排除函数本身的问题。
  2. 关于你看到的警告信息,运行warnings()就能查看具体内容,大概率是readFn内部处理文件时的提示(比如缺失值、格式不兼容等),可以根据警告内容调整函数里的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:38:56