如何对数据框中的每行数据进行累加呢?
Hoas 既然已经知道 R Core Team 这么做,今后也不太可能做功能拆分和整合。所以 Base R 就是代指那些 R 包合集,相当于 tidyverse
Pkgs <- sapply(list.files(R.home("library")), function(x)
packageDescription(pkg = x, fields = "Priority"))
names(Pkgs[Pkgs == "base" & !is.na(Pkgs)])
[1] "base" "compiler" "datasets" "graphics" "grDevices" "grid"
[7] "methods" "parallel" "splines" "stats" "stats4" "tcltk"
[13] "tools" "utils"
- 已编辑
Liechi yihui 对圆环套圆环那种多层套娃来说,管道确实方便阅读,层数越多越有利。然而据我观察,用户养成习惯之后,即便是两三层,管道顺手就来了,挡不住。这个小东西表面似乎是技术层面的改动,然而底层碰的是哲学层面,或者说是思维方式。俗称洗脑。
Cloud2016 tctcab 像 ggplot2 这样的包名还算是好的,dplyr 已经到我记忆的极限了,“噗啊啊啊”包完全靠拼音才记得住,而专管管道那个包的名称……我放弃治疗了。@yihui 不要嫌弃,如果换我,我也加载 'tidyverse',而不是 'mag...'——臣妾实在记不住啊!
包名和函数名是我转用 tidyverse 的最大障碍,纯属人为制造,完全没必要。str_c()
如果叫str_paste()
,select()
如果叫 df_subset()
,那么对 base R用户就会友好很多。而像summarise()
,猛一看还以为是 summary()
,其实它是tapply()
,这就让人很割裂,似乎跟 base R 有不共戴天之仇,拼命任性地划清界限,而不计对 base R 用户习惯的忽视。换位思考一下,如果 R 初学者先接触了 tidyverse,那么让他从 summarise()
往 tapply()
过渡肯定也是内心一百个不情愿。正如我在前两天的吐槽帖 里所说:
生活在秦国的人,不需要知道周天子。
至于 tidyverse 函数输入和输出的一致性,它确实是一个卖点,然而我觉得并不是很大的痛点,有人为炒作的水分。“输入数据框,输出也必须是数据框”,这个前提是 tidyverse 很多函数存在的合理性之一,然而推敲一下,这个前提的基础并不那么坚实——它把“一致性”偷偷限定在了“数据框”层面。这样,管道出口入口处倒是一致了,可是得先把数据转成 tidyverse 接受的形式才能进管道,而管道里出来的不一定是你要的最后结果,还得进一步转换。可是别忘了,base R 的一致性也很好啊,只不过是体现在维度更低、结构更简单的“向量”层面。如果说 tidyverse 是对数据进行分子层面的改造,那么 base R 就是进行原子层面的改造。
作为一个普通用户,我上述看法可能都是片面甚至是错误的。不过,就像秦灭周一样, tidyverse 的野心若隐若现。未来,tidyverse 会不会跟 base R 分道扬镳,就像 openoffice 和 libreoffice 呢?
如果是这样,那就干脆把 base R 跟 tidyverse 当作两门不同的编程语言来学习和使用吧。
- 已编辑
dapengde summarise
跟 tapply
的一大不同是它们处理的数据形式不同,summarise
要求数据符合 tidy
风。我觉得 Hadley 提倡的 tidy data
是极乐净土的灵魂:不管是数据整理,还是哥哥作图,如果觉得操作不顺手了,往往是由于数据不够“整然”造成的。Tidy data
的要求使得极乐净土处理的数据基本单元是数据表,而 R base 处理的基本单元是向量,这导致了两者在数据分析过程中的一些逻辑差异。这差异当你用 summarise
处理 iris
数据时就能体会到。
我觉得极乐净土和 Base R 在具体操作的不同只是形而下的器的差异,但是对数据形式要求的不同则属于形而上的道的殊途了。进化领域有句话叫做:
Nothing in Biology Makes Sense Except in the Light of Evolution.
在极乐净土世界似乎也可以说:
Nothing in Tidyverse Makes Sense Except in the Form of Data that is Tidy.
社区大佬 Norm Matloff 开始喊话 Tidyverse 了
Language unity
Horrible loss for R.
Python is currently undergoing a transition from version 2.7 to 3.x.
This will cause some disruption, but nothing too elaborate.By contrast, R is rapidly devolving into two mutually unintelligible
dialects, ordinary R and the Tidyverse. Sadly, this is a conscious
effort by a commercial entity that has come to dominate the R world,
RStudio. I know and admire the people at RStudio, but a commercial
entity should not have such undue influence on an open-source project.It might be more acceptable if the Tidyverse were superior to ordinary
R, but in my opinion it is not. It makes things more difficult for
beginners. E.g. the Tidyverse has so many functions, some complex, that
must be learned to do what are very simple operations in base R. Pipes,
apparently meant to help beginners learn R, actually make it more
difficult, I believe. And the Tidyverse is of questionable value for
advanced users.
摘自 <https://github.com/matloff/R-vs.-Python-for-Data-Science>
- 已编辑
Cloud2016 magrittr 好像是得名于画家 René Magritte,他在一幅画下题了一句 "This is not a pipe(烟斗)",但是他画的实际上就是一个烟斗(pipe)。之前我一直随大流把 pipe 翻译为“管道”,现在看来叫“烟斗”似乎更合适:pipe
将烟%>%
到嘴里。
《茶花女》的女主名字叫玛格丽特(Marguerite),这是我最喜欢的一部法国小说,我之前觉得这个包似乎和《茶花女》有关,所以比较容易就记住了这个包名。不过现在才知道这是个先入为主的误解。
不过烟斗也是一种管道,这样看来之前也没有翻译错。
- 已编辑
一开始也是习惯了tidyverse
系列包,但是在使用data.table
之后,只剩下ggplot2
了