从另一种视角看R语言的Tidyverse方言
- 已编辑
那些凤毛麟角的好提问,距离答案只差临门一脚。遇到这种百年不遇的好问题,答主们喜极而泣,趋之若鹜,像捡了个宝。
这个事儿吧,见 @yihui 那篇 MRE 悖论 (The Minimal Reproducible Example Paradox)。其中说到这么一句:
当一个人有能力提供一个最小化示例的时候,很有可能他已经非常接近答案了,兴许只有一步之遥。实际上,他已经有能力自己解决这个问题了。
When a user is able to create a minimal reprex, chances are that she is really close to the root problem (perhaps only one step away), so that she may actually be able to solve the problem by herself!
简单来说,有能力把问题说清楚的人,基本上已经把问题解决了。
逆否命题:凡是提问的,基本上说不清楚问题。
根据这一条,新手须知是鼓励新手能把问题提好,这基本上等同于鼓励新手培养自己解决问题的能力,进而等同于鼓励新手不提问,...我的天,这简直就是新手悖论。
我想说的就是新手发帖要规范,并非说这样不好。我比各位理解更深刻,我是做售后的,每当听到某某数据不正常,我该怎么办的提问我就得烦死,得追着问来问去,好多时候问了还不知道需要看的参数在哪里,人家根本不关注。
我的意思是大家都很忙,格式和要求不规范,没必要浪费时间追问,因为我的追问公司是给钱的,虽然少的可怜,但是在论坛里,大家时间都宝贵的意思,而且还不要钱。
我也觉得这事喜欢和不喜欢就是一种感觉,我就是喜欢data. table,但我也不讨厌tidyverse,我也只是不喜欢千秋万代,一统江湖的声势浩荡。
data.table 这样子有规律的代码,我不用死记硬背一堆函数名字,我只是需要知道,按原则,i,j,by
该怎么填就行。
希望这些解释不会让人误解我讨厌新手须知,我是支持的,因为我每天都要受到不规范提问的荼毒,忙的时候心里真是很烦。
- 已编辑
话说新手须知是很长,但耐心看完了不管对这次提问还是对以后其他问题,不限于本论坛,都是很好的帮助,我并不觉得着急到连十几分钟浏览一个帖子都没时间。
当然,这个是一个成长的过程,我最初也是什么都不懂瞎问,但是如果没人回的时候还是要看置顶帖的,帖子名字都提示到家了。我觉得这是一个态度问题。
tidyverse 是一套针对数据分析的生态,个人觉得相对于base R 对于没有编程经历的人容易上手很多,并且在数据分析上也足够强大。如果想做开发相关的,就要学 base 和更通用的编程知识了。
这楼歪得不知道还能不能回得来哈哈哈
重要的是生态,如果base-R 也可以有一套相对统一的规则去开发R包,tidyverse就是多余的。
比如tidymodel可以让各种各样的统计模型统一起来,不仅写起来语法相近,也可以帮助理解。
可能tidyverse里有些不同的编程理念,学习曲线稍陡,但学会了以后就比base-R杂乱的生态要好的多
tidyverse其实没你想那么好,论坛里就有例子:
个人对净土宗的看法经过了肯定-否定- i don't care三个阶段了,目前尽量不用净土宗,但管道遍地的习惯还是一时难改
tctcab 一样的历程,虽然我很菜,但不妨碍我们有一样的看法。
这些事情见仁见智,求同存异。本质上tidyverse 的想法不错,不喜欢就不用,喜欢就用,无所谓就需要用的时候用点,不需要的时候不用。
抬杠不需要,我又不是上学的时候有大把时间挥霍,可以去做个杠精。没必要,生产力第一,感觉对了就好。
很认同作者的观点,我极为讨厌R中所谓的”管道“,纯粹增加代码的复杂度,降低可读性,还非常死板,调试费劲,改代码等于重写,感觉完全是”因噎废食“,
用户需要的根本不是所谓的”管道“,而是一套真正的”分析流程管理解决方案“,改方案可以可视化,可以嵌套,可以保存为”工作流程模板“便于下次重用、修改。
从我个人来讲是先学的base_R入的门,是在学了ggplot后才知道有tidyverse,现在给我的感觉就是两种混用,有时用tidyverse很麻烦,如前几天我遇到一个行连接的小事,用tidyverse 中的bind_rows()时因输入不同文件同变量的有的是数字有的是文本,就很麻烦连接。但用rbind()就直接搞定。我感觉tidyverse思想与base_R相差有点大,自己水平也不高,就是那种好用就用那种了。
dapengde 趁着七普人口数据出来,老龄化的趋势,可以写本《中老年人学习R语言》,即当真事大事,还趣味的回复一下,60岁及以上人口为26402万人(2亿6400多万),占18.70%(其中,65岁及以上人口为19064万人,占13.50%)V,从根本来说,相当于R的人口基数太少了,而打破这一局限,“一大,一小”不只需要从娃娃抓起,也需要从“大”的抓起,反而这一人群,即慢的有个性,慢的有耐性,慢的有才华...诚如N年前的“寻乌调查”中的人物,62-23岁的年龄跨度,按年龄从长至少排序
郭清如、62岁、(秀才,赴过乡试,做过小学教师,城区人)四人,到过一二次调查会,稍微供给了一点材料。
郭友梅、59岁、在材料上与我以大量供给的,是郭友梅(杂货店主,曾任县商会长,本城人)
范大明、51岁、(贫农,县苏职员,城区人)
刘茂哉、50岁、(老童生,开过赌场,做过小生意,原是小地主,降为贫民,曾任县革命委员会委员,现任区苏委员)两人,也供给了一部分材料,间或到我们的调查会。
刘星五、46岁、(农民,做过小生意,乡苏委员,城区人)
陈倬云、39岁、(自治研究所毕业,做过缝工,做过小生意,当过小学教师)
赵镜清、30岁、(中农,做过铸铁工,做过小商,陈炯明部下当过兵做到排长,现任县苏委员,双桥区人)
李大顺、28岁、(贫农,曾任区苏委员)
刘亮凡、27岁、(县署钱粮兼征柜办事员,现任城郊乡苏维埃主席,城区人)四人,他们都是经常到调查会的。
钟步赢、23岁、(梅县师范生,区政府主席,石排下人),摘自http://dangjian.com/specials/xwdc/mzdzxw/201507/t20150709_2720620.shtml
airexceltor 写书太耗神。不知道有没有出版社愿意为此立项。
dapengde 28开原则,可以先脑洞一下,出一份大纲(思路),
至于写作?有没有出版社愿意为此立项?这个问题,光看概率,也可以提前预知的,反而压根不愁了
君不见《老年人学计算机》类似的书,多有市场,这个通过图书电商网站平台可以统计出来v
(当我年老的时候,我可以为孙子孙女们讲故事,传奇一生,快乐一生!爷爷/奶奶当年做了一件小事,同时也是一件大事,力挽狂澜....)
愁的如何通过协作,在线的方式(为主)把这样的事,从小事,细活中,把R的历史,网站的问题做一个系统的总结盘点,即有内涵,还可以挖掘出来诸多新的认知见解(当年我要有这样的思路,我怎么怎么的....)还让人即产生动力,并且从点滴之中获得灵感
诚然,tidyverse在入门学习是复杂了点,就像作者说的一样“认知过载”。而且,学习了tidyverse不等于放弃了base-R,至少本人在大多数情况是混着用的。但是,举个例子,生态学的Vegan包,对tibbles支持就不是特别好,所以我通常只使用R自带的函数。至于管道,仁者见仁,智者见智,有人觉得难用,有人觉得好用。总结下,作者其实在意且强调的是base-R和tidyverse在R语言教学中的利弊,两者没有对错,看个人的知识储备和需求。
歪个楼. 大家对 tidyverse 的讨论和我昨天看到的 Mathematica 的一篇文章有些微妙的呼应: https://blog.wolfram.com/2019/04/02/why-wolfram-tech-isnt-open-source-a-dozen-reasons/ 这篇两年前的文章来自 Mathematica 的官方 blog, 它试图解释为什么 Mathematica 不应该开源. 而底下的留言出现了各种反对的声音.
至于 tidyverse, 我不认为真的可以在实际宣传中, 去 "公平" 地推广 tidyverse 和 base R, 我不认为真的有这种公平的可能性和必要性. tidyverse 的背后是自上而下统一 "整容" R 的雄心. 如果我是 tidyverse 的倡导者, 我要写一本书介绍 tidyverse, 各位能够想象在一本小小的书里我还要完全地, 公正地兼顾 tidyverse 和 base R 吗, 要做到不偏不倚, 不过度宣传, 然后让读者做出自己的判断吗?
根本不可能. 现实世界中的观念的竞争和碰撞就不是这样的. 受众学习的过程也不是这样的. 这就像你写简历, 还要在简历中坦言自己有哪些缺点, 以达到公平公正的中立? 真正的公平难道不是竞争出来吗? 各方尽自己所能推广自己认为对的东西. 从这个角度说, 我不认为 tidyverse 有任何不对的地方.
作为用户和 R 的开发者来说, 我从入门到现在, 到处都是 tidyverse 和 Hadley 的痕迹, 这些痕迹不会百分之百影响我, 但我的感受中, 它们对 R 社区的影响是完全利大于弊的. ggplot2, devtools, R package 的书, advanced R 的书 ... 如果 tidyverse 在宣传上有什么问题, 那也只能说是这些益处的硬币的反面, 没法割舍.