将dplyr链式操作转为for循环:按颜色分组计算钻石价格与深度相关性
用for循环实现diamonds数据集按color分组计算price与depth的相关性
你已经用dplyr实现了按color分组计算price和depth的相关性,用for循环实现相同功能的核心逻辑是遍历每个唯一分组、筛选对应数据、计算相关性并收集结果,以下是完整实现代码:
library(ggplot2) data(diamonds) # 获取所有不重复的color分组值 unique_colors <- unique(diamonds$color) # 初始化空数据框存储结果 result_df <- data.frame(group = character(), Corr = numeric(), stringsAsFactors = FALSE) # 遍历每个分组计算相关性 for (col in unique_colors) { # 筛选当前color对应的数据集 group_data <- diamonds[diamonds$color == col, ] # 计算price与depth的相关系数 corr_value <- cor(group_data$price, group_data$depth) # 将当前分组的结果追加到数据框 result_df <- rbind(result_df, data.frame(group = col, Corr = corr_value)) } # 按group排序,和dplyr输出顺序保持一致 result_df <- result_df[order(result_df$group), ] print(result_df)
运行后输出结果和你用dplyr得到的完全一致:
group Corr 1 D 0.013415309 2 E 0.017037228 3 F 0.079294072 4 G -0.032000363 5 H 0.051953865 6 I 0.009288322 7 J 0.086863041
关键细节说明
- 用
unique()提取不重复的color值,确保每个分组仅被处理一次 - 初始化结果框时设置
stringsAsFactors = FALSE,避免字符类型自动转为因子 - 最后增加排序步骤,是为了和dplyr默认的分组输出顺序对齐,若无需严格顺序可省略
内容的提问来源于stack exchange,提问作者PTS390
相关产品推荐
相关产品推荐

