R语言如何遍历多个reference class实例并调用指定类方法
方案1:直接遍历实例对象列表(更稳定,优先推荐)
你已经将所有实例对象存入listOfObjects,直接遍历该列表即可调用方法,不需要依赖名称列表listOfNames:
实现1:for循环
for (obj in listOfObjects) { obj$say_hello() }
实现2:lapply简洁写法
不需要返回值的话可以用invisible包装,避免输出无用的空列表:
invisible(lapply(listOfObjects, function(x) x$say_hello()))
该方案不依赖实例在全局环境的变量名,就算后续删除了ref1/ref2/ref3变量,只要listOfObjects还保留实例引用就能正常运行。
方案2:结合实例名称列表调用
如果你需要同时用到实例名称做额外处理(比如打印调用日志、按名称筛选实例等),可以用get()函数从环境中提取对应实例再调用方法:
实现1:for循环
for (name in listOfNames) { # 从当前环境获取对应名称的实例对象 get(name)$say_hello() # 可追加名称相关操作,示例:打印当前调用的实例名 # cat("已调用实例:", name, "\n") }
实现2:lapply简洁写法
invisible(lapply(listOfNames, function(nm) get(nm)$say_hello()))
注意:如果你的实例不是定义在全局环境中,需要给get()函数指定对应的envir参数来定位变量所在环境。
内容的提问来源于stack exchange,提问作者eapie
相关产品推荐
相关产品推荐

