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

R语言:如何在for循环中用i指代chr_i数据框并获取其维度?

批量获取多个命名数据框的维度(R语言)

你遇到的问题是:paste0生成的是变量名的字符串,而非实际的数据框对象,直接调用dim()只会计算字符串的长度,而非数据框的维度。以下是两种可行的解决方法:

方法一:修改循环,用get()获取数据框对象

通过get()函数,你可以根据字符型的变量名,提取出对应的data frame对象,再调用dim():

for (i in 1:22) {
  df_name <- paste0('chr_', i)
  # 根据变量名字符串获取实际的数据框
  target_df <- get(df_name)
  # 打印维度,格式更清晰
  cat(sprintf("数据框 %s 的维度:%d 行 × %d 列\n", df_name, dim(target_df)[1], dim(target_df)[2]))
}

方法二:批量获取到列表,高效处理

如果不想手动指定1到22的范围,可以用ls()结合正则表达式筛选变量名,再用mget()批量把数据框存入列表,之后批量处理:

# 筛选所有以chr_开头、后面跟数字的变量名
chr_names <- ls(pattern = "^chr_\\d+$")
# 批量获取这些变量对应的data frame,存入列表
chr_df_list <- mget(chr_names)

# 方法1:遍历列表打印维度
for (name in names(chr_df_list)) {
  cat(sprintf("数据框 %s 的维度:%s\n", name, paste(dim(chr_df_list[[name]]), collapse = " × ")))
}

# 方法2:用sapply直接输出所有维度(更简洁)
sapply(chr_df_list, dim)

注意事项

如果你的数据框不在全局环境(比如在某个自定义函数的环境中),需要给get()或mget()指定envir参数,例如get(df_name, envir = environment())。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:42:04