在R语言中循环计算多个数据框的均值与标准差
批量计算多个数据框的均值与标准差
方法一:使用for循环
先匹配并获取所有目标数据框的名称,再逐个计算均值和标准差并存储结果:
# 获取所有命名为bmw_1到bmw_9的数据框名称 bmw_df_names <- ls(pattern = "^bmw_\\d$") # 创建空列表存储计算结果 calc_results <- list() # 循环处理每个数据框 for(name in bmw_df_names) { # 获取对应的数据框对象 current_df <- get(name) # 按列计算均值(na.rm=TRUE用于忽略缺失值,可根据需求调整) df_mean <- colMeans(current_df, na.rm = TRUE) # 按列计算标准差 df_sd <- apply(current_df, 2, sd, na.rm = TRUE) # 将结果存入列表,以数据框名称为键 calc_results[[name]] <- list(均值 = df_mean, 标准差 = df_sd) } # 查看最终结果 calc_results
方法二:使用lapply(更简洁的向量化方式)
利用lapply批量处理,代码更紧凑:
# 获取目标数据框名称 bmw_df_names <- ls(pattern = "^bmw_\\d$") # 批量计算并生成结果列表 calc_results <- lapply(bmw_df_names, function(name) { current_df <- get(name) list( 均值 = colMeans(current_df, na.rm = TRUE), 标准差 = apply(current_df, 2, sd, na.rm = TRUE) ) }) # 为列表元素添加数据框名称作为标识 names(calc_results) <- bmw_df_names # 查看结果 calc_results
说明:如果你的数据框是单列结构,直接用mean(current_df, na.rm = TRUE)和sd(current_df, na.rm = TRUE)即可,上述代码默认处理多列数据框的按列计算场景,适用性更广。
内容的提问来源于stack exchange,提问作者María del Carmen Montoya
相关产品推荐
相关产品推荐

