大家好,我想请问下RNotebook选择了输出是knit to html之后就转为r markdown了么,因为找不到preview notebook的按钮了,只存在knit按钮了

    如果你是从 RStudio 里新建了个 R Notebook,那么在出现的模板里有这样的文字:

    This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

    所以 R Notebook = R Markdown Notebook。严格来讲,并不存在 "R Notebook 转成 r markdown" 这个概念。

    knit 按钮很好啊,为啥要找 preview notebook 按钮呢?如果非要这个按钮,只需把文件开头 yaml 声明里的 output 改为

    output: html_notebook

    preview 按钮就回来啦。

    @yihui 话说 RStudio 的 New File 菜单逻辑挺乱的。R Notebook 跟 R Markdown 跟 R Presentation 并列,而点开 R Markdown 后里面又出现 Document (HTML 等), Presentation 和 From Template 等子菜单……依我看, 这些都应该归属于 From Template 里面。

    不过 R Notebook 预览得到的 HTML 文件那几个隐藏和展示代码的按钮是别的地方没有的,挺好玩,以前没注意过。我觉得不如再加上个是否隐藏代码运行的结果,就更干净了。

    顺便提一嘴:rmarkdown, rticle, knitr, bookdown, blogdown......这几个包的逻辑关系和相互之间如何依赖如何调用,我非常想彻底搞清楚。期待哪位能画个图示来说明一下。

      LTkongjianyang 所谓 R Notebook,指的是纯 R 脚本,它可以直接编成输出报告,其原理是先通过 knitr::spin() 整理成 .Rmd 文件,剩下的就是 R Markdown 的套路了,R Markdown 能输出什么,它就能最终输出什么。

      R Markdown Notebook 指的是一种特定输出格式的 R Markdown 文件,输出格式是 rmarkdown::html_notebook。只有这个是可预览的,前面说的 R Notebook 只能从头到尾一口气编译,不能像 R Markdown Notebook 那样一步步执行每个代码块、预览。

      dapengde 是有点混乱。尤其是 R Presentation 这个菜单应该扔掉了,很容易引起误解,它是一个早期的试验品,现在基本废弃了。

      .Rmd 文件通过 knitr::knit() 编译为 .md,然后通过 Pandoc 编译为其它输出(HTML、PDF 之类的),所以 rmarkdown = knitr + Pandoc 的包装。剩下的包都是 rmakdown 的扩展,几乎是平行关系,但 blogdown 继承了很多 bookdown 里的特性,所以算是 knitr 的重孙了。

        1 个月 后

        看 Hadley 的 《R for Data Science》也碰到这个疑惑,结果一搜就看到 yihui 的解释了。真高兴。

        10 个月 后

        dapengde 我觉得我明年应该停止一年代码开发,把我做过的事情好好捋一遍。我捣鼓的很多东西都没有卖力打广告,因为我不喜欢主动打广告,一般都是等用户自己去发现、雀跃,这样他们印象会更深一些。开发者自己王婆卖瓜容易招人嫌。

          yihui 可以请慕课网Angelayuan小姐姐给你打广告,她的讲解条例清晰、幻灯片优雅,说话声音尤其甜美。另外多去你同事那里转转,时不时测试下他们写的包对中文是否友好,这个很重要。另外可以考虑出中文版的书了,10个包乘以10人,不如1个包乘以1000能量大啊。

          yihui R mark down 混和写 she l l、python、s pa r k s q l 目前体验比 ju py te r 和 ze p pin 都要好太多了。但是推广力度不够,很少人知道怎么用。

          rmarkdown 的推广难度,我感觉比推广 R 要高一两个数量级。

          很多人使用 R,只为用其中的某个包,只需学会进入 R,读入数据,计算,拿到结果,离开 R。完毕。只是把 R 作为 Excel 里缺少的一个函数。即便是这个过程,门槛也不低,已经过滤掉了一批人。

          而 rmarkdown,相当于让用户取代 word, powerpoint, endnote, mathtype,以及用户已经习惯的其他作图工具。肯换的都是有点极客精神,并且有闲或忙里偷闲。一般人都懒得换。

          要想推广 rmarkdown,得抓住两点:

          1. 从娃娃抓起。本科生开相关基础课,研究生从一开始就 rmarkdown。我将来要是带学生,就在科研入门阶段手把手地教。

          2. 做好跟传统软件的接口,例如把 rmarkdown 跟 .docx,pptx等文件的相互转换做好,让不愿意换的人跟 rmarkdown 用户能顺畅协作。目前虽然 pandoc 能转成 doc,slidex 能转换 pptx,但都不够令人满意,而且是单向。老板一句“把 ppt 发给我修改”,能断了多少年轻人学xaringan的念想。

          yihui 阅。

            dapengde 第一点我自己几乎无法控制,只能靠教育战线上的各位老师了,我能做的基本上只有写书(我的时间只够照顾到英文,中文就靠你了)。第二点难度略大,不过我相信 Markdown 与 Office 文档的可逆转换应该不会等太久了。最近刚有人做了个相关的包:https://github.com/noamross/redoc

              yihui 这个好,找个时间试用。

              文件格式互转的问题,我觉得思路可以放宽一点,不一定非要在技术层面写个包来实现,也可以从策略层面,只要找到常见场景下的解决方案就行了。

              比如 spin() 函数将 R 脚本转成 .Rmd 文档,技术层面是不难的,它的价值在于策略层面,提出了一种 R 代码的书写方式,让两种格式的转换变得很容易。

              在策略层面发发力,能减轻技术层面很多负担,也就是你说的“人脑一小步,电脑一大步”。

                dapengde

                其实Rmarkdown的尴尬之处还是在于用R的人不多。人都是有惯性的,习惯用word或者latex的人要转投Rmarkdown的话,除了markdown的学习成本(虽然不多),还有R的学习成本。即使是编程作为必备技能的学术界,R也不是唯一的选择。

                如果向别人推广学R的这一步跨过去的话,使用Rmarkdown等等都是很自然的事情。所以我认为推广Rmarkdown的关键还不在于Rmarkdown,也不在于Rmarkdown跟其他格式如何转换如何兼容,而是如何把R卖出去。

                  tctcab 我一直再纳闷,R一开始安装上为什么不是Rstudio这样的ui,我一开始学R,看到那个原生的丑陋的ui就没什么兴趣了。其实R的原生ui设计的实在不够专业。另外,很多网上关于R的评价都是片面的,比如R运行速度比python慢,R不能处理大数据之类的。还有就是R的包太碎了,相互之间还有兼容性问题。我心目中的R应该是包的底层都用C或者C++实现,自带rstudio这样的ide,包按照功能分成大概100个以内就可以了,其他开发人员都去GitHub上完善功能就可以了,没必要开发那么多包,记不住。

                    tctcab 确实如此, R 如果能推广的话,Rmarkdown 的用户自然也会多起来。然而这是另外一个话题了,不如逐个击破。我这里主要是想说让 R 用户用上 Rmarkdown 这个问题。并且,如果 Rmarkdown 推广得好,说不定会反哺 R,作为 R 的一个卖点,吸引一些人专门为了享受 Rmarkdown 的便捷而投入 R 的怀抱呢。

                    chuxinyuan 丑陋的 UI 确实阻挡了一部分用户,但我觉得这不是 R 的问题,反正我给学生讲课的时候是直接忽视,提都不提,就当这个 UI 从来不存在,就当 R 是个类似于 ffmpeg 那样的 cmd 命令,这样的话,第三方 UI 可以尽情发挥,用户也有更多选择,这样也能刺激各个 UI 不断完善,比一家独大垄断要好得多。在 RStudio 出现之前, 其他 UI 如 Tinn-R、 Rkward 都挺流行的,而一些通用编辑器如 vim 等都有 R 的插件。即便是现在,RStudio 也不是一统江湖,Sublime Text、Atom、Emacs 等用户未见得需要 RStudio。不过,如果 RStudio 能将 R 打包一起安装,像对待 pandoc 那样,并且能对 R 的版本一键升级,像对待包包们那样,倒是会省很多唇舌。

                    包太碎我觉得不是什么大问题。需要的话,你完全可以把一些小包整合成大包,像 tidyverse 那样,想合就合,想分就分。

                      dapengde

                      只论R的IDE的话,目前为止没有比Rstudio做的更好的了(并不只是我一个人的看法)

                      很多人没转投python就是因为python里没有Rstudio同一级别的IDE

                        chuxinyuan

                        你看的这些评论水平都很低,不用理会,R包如果限制死一百个以内的话那就会跟c++一样让我讨厌了。
                        另外R的包那么多记它干嘛…要用啥直接搜就行了,谁也不会嫌淘宝京东货物种类太少对吧

                          tctcab RStudio 也是最适合我的 R IDE。然而,每个人衡量的标准不同,功能强大的另一面是安装臃肿、加载缓慢、偶尔崩溃,这对我不算啥问题,但对一部分用户恐怕是难以容忍的。

                          我喜欢 RStudio,但不希望它一家独大,这样它才有前进和革新的动力。

                            tctcab 其实我心目中的R应该至少做好下面几方面的事情:

                            • 功能重叠和相似的包整合。有时候干同一件事,有n个包都可以,纠结啊,作为完美主义者,我往往只喜欢用功能最强大最优雅的那个,但是往往都是各有千秋,又有重合,两个都得学都得用,如果两位作者能合作下,那就事半功倍。

                            • 个别核心依赖包自动放在base里。比如ggplot2,很明显lattice应该换成ggplot2.

                            • 包的风格统一。一会儿驼峰,一会儿下划线,还有用点连接的,比如openxlsx::read.xlsx, readxl::read_excel,
                              jpeg::readJPEG, magick::image_read。统一风格可以减少学习成本。如果read.xlsx, xlsx.read, read_xlsx,
                              xlsx_read, xlsxRead, readXlsx都是等价的,随便用那个都可以,可以满足不同使用者的偏好,但是就是苦了
                              开发人员,而且不利用代码分享。不过可以做一个参数设置,开发人员自行选择自由切换。

                            • 包都支持管道符。不用管道符的时候大部分情况下,我都是用“=”号的,在管道符下我更愿意用“->”,而不是“<-” 。

                            • rmarkdown、blogdown、bookdown、shiny中文书籍。其实rmarkdown、blogdown、bookdown、shiny这些东西才是R诱人(装逼)的地方,但是我发现这方面的书基本都是英文版的。估计yihui工作所迫吧,其实很明显中国人多啊,中文版本能量更大啊。

                            • R的帮助系统支持多语言。这个对于初学R的比较友好。不然真的很容易放弃。