R语言中对数据框执行循环操作后如何将结果输出为新数据框
问题核心原因
R中的for循环本身无返回值,将for循环直接赋值给loop_data自然得到NULL,print语句仅会将内容输出到控制台,不会将数据存入变量。
方案1:调整现有循环逻辑
提前初始化空数据框,每次循环临时存储单国结果再逐行绑定即可:
# 初始化结构匹配的空数据框 loop_data <- data.frame(Country = character(), Factor = integer(), Year = integer(), Technicians = integer()) for(z in 1:114){ temp_df <- best_data(z) loop_data <- rbind(loop_data, temp_df) }
运行结束后loop_data就是合并完成的目标数据框。
方案2:更简洁的dplyr原生写法
你已经在使用dplyr管道语法,完全不需要自定义函数和循环,用分组取最大值的逻辑就能实现需求,效率更高:
library(dplyr) latest_df <- numeric %>% group_by(Country) %>% # 取每个国家年份最大的1行,with_ties=FALSE表示同年有多条时仅取第一条 slice_max(Year, n = 1, with_ties = FALSE) %>% ungroup()
内容的提问来源于stack exchange,提问作者Laz
相关产品推荐
相关产品推荐

