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

如何获取R会话中已加载data.frame的名称并将其存入变量

问题原因说明

你原始代码无法输出正确结果的核心原因是:ls()函数返回的是当前环境中所有对象的字符串类型名称,而非对象本身。你直接对字符串变量y执行is.data.frame()判断,相当于判断字符串是否属于数据框类型,永远会返回FALSE,因此不会有任何匹配结果。

问题1:仅打印当前环境中的data.frame对象

循环写法

和你原始的循环逻辑兼容,仅需补充get()函数把字符串名称转换为对应对象即可:

for (obj_name in ls()) {
  if (is.data.frame(get(obj_name))) {
    print(obj_name)
  }
}

简洁向量化写法

无需显式写循环,一行代码即可完成打印:

print(Filter(function(x) is.data.frame(get(x)), ls()))
问题2:将data.frame名称列表存入变量

直接将上述筛选逻辑的结果赋值给目标变量即可,最终得到的是存储所有数据框名称的字符向量:

# 筛选全局环境中的所有数据框名称,存入df_names变量
df_names <- Filter(function(x) is.data.frame(get(x)), ls(envir = .GlobalEnv))

如果需要筛选其他环境的对象,修改ls()的envir参数为目标环境即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:27:05