如何在R语言中循环打印数据框列表的名称及行数?
解决R语言遍历数据框列表并打印名称和行数的问题
你的代码问题在于循环时直接遍历了列表中的数据框对象,无法关联到它在列表里的名称。下面提供两种可行的解决方法:
方法一:基础R循环(遍历列表名称)
library(tidyverse) data(Affairs, BankWages) df_list <- list(Affairs, BankWages) names(df_list) <- c("Affairs", "BankWages") for (name in names(df_list)) { row_count <- nrow(df_list[[name]]) cat(sprintf("数据框 %s 包含 %d 条观测\n", name, row_count)) }
运行后输出:
数据框 Affairs 包含 601 条观测 数据框 BankWages 包含 474 条观测
这里直接遍历列表的名称向量,通过名称取出对应数据框,再获取行数并格式化输出。
方法二:tidyverse风格(用imap函数)
如果你习惯tidyverse的函数式编程,可以用imap——它专门处理带名称的列表,自动传递元素和对应的名称:
library(tidyverse) data(Affairs, BankWages) df_list <- list(Affairs, BankWages) names(df_list) <- c("Affairs", "BankWages") imap(df_list, ~ sprintf("数据框 %s 包含 %d 条观测", .y, nrow(.x))) %>% cat(sep = "\n")
其中.x指代列表中的每个数据框,.y指代对应的名称,一行代码就能完成遍历和输出。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

