小伙伴们,我们这周三晚上的R语言进阶课马上要开始啦,就在5月2日晚19点到21点。我准备了一场关于控制流和apply族的实战盛宴,想把你们平时搞循环分组过滤的时间都省下来,让R帮你们干苦力。别慌,我先把大招给你们透个底,这次的实战用的是一份好吃的甜品数据,边学边流口水的感觉真的很刺激! 首先咱们要给R安上“大脑”。像if语句那种死板的条件判断就别硬写了,用灵活的控制流能帮你省不少麻烦。for循环要是写死了步长也容易出错,while循环适合那种不知道循环多少次的场景,repeat循环就像是个“后门”,给你不确定结束条件的操作留条退路。 函数封装这块就像是搭积木一样有趣。用function(x) {return(x^2)}这几行代码就能搭个平方计算器出来。参数默认值能帮你一键搞定常用配置,隐藏参数把内部细节藏起来只留接口给你用。调用包的时候用:::能避免命名冲突的麻烦。 apply族这六兄弟各有各的绝活。从严格类型检查的vapply到懒加载的map,再到purrr包里的map和walk,随便挑一个用都很顺手。Filter和dplyr的filter都能按条件筛数据,简单得像筛糠一样。by和split能帮你把数据切成块并行计算,aggregate和dplyr的group_by更是直接把汇总统计一行搞定,行数瞬间能少掉70%。 接下来咱们用甜品数据来跑一遍流程。读入含糖量、热量、口味等级这些csv文件后,用ifelse把“低糖”替换成0,“高糖”替换成1,一行代码就把离散化处理了。然后用lapply遍历每行算“热量/含糖量”,结果存进新列。再用by按口味分组算平均热量和最大含糖量。最后用write.csv把结果写回去,全程代码加起来也就不到30行。 上课地点是在经济楼N202,记得提前给电脑充满电别低电量掉线了。心态上放轻松,带着问题来带着答案回就行。实在写不出来就举手叫我,我随时都在。 总之就是把“苦力活”都扔给R来干,我们把创造力留给自己。学会了这几招,不管是几十兆的小表还是几GB的大库都能轻松搞定!下周我还会继续更新内容哦,大家千万别错过了!