Steem 和 R 语言:跟大鹏学 R 语言(2)简单计算
cn·@dapeng·
0.000 HBDSteem 和 R 语言:跟大鹏学 R 语言(2)简单计算
前情回顾: - [预告:“Steem 和 R 语言:跟大鹏学 R 语言”连载即将开始](https://steemit.com/cn/@dapeng/xuer-0) - [Steem 和 R 语言:跟大鹏学 R 语言(1)下载安装](https://steemit.com/cn/@dapeng/xuer-1) 本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第一章。  ## 1.2 第一次畅谈:计算 R最简单的功能,是用作计算器。先在左上面板窗口输入以下代码,然后按窗口上方的运行(Run)按钮,或按快捷键 ctrl+回车(这个快捷键会经常用),就会运行光标所在行的整行代码: ``` 3 * (2 + 2) ``` ``` ## [1] 12 ``` 上面第一行是输入的代码示例。第二行用两个`#` 号开头,表示是运行结果,默认显示在RStudio的左下面板。如不另作说明,本书都用这种格式来区分代码和运行结果。我们暂时不管`#`号后面的`[1]` 是什么,先来试试R的数学基本运算符:加`+`, 减`-`,乘`*`,除`/`,乘方 `^`,整除的商 `%/%`,整除的余数`%%`。 **练习 1.1** 计算365除以7得到的整除商和余数。 下面,我们开个平方。输入并运行 ``` 9 ^ 0.5 # 开平方 ``` ``` ## [1] 3 ``` 或者 ``` sqrt(9) # 也是开平方 ``` ``` ## [1] 3 ``` 上面两条语句的作用等同,只是形式不同。这里,`sqrt()`是开平方的函数,被开方的数必须放在圆括号里,这是 R 语法的基本规则之一。`#` 号后面一直到这一行的末尾是注释,注释部分不会被运行,这样是为了方便将来理解这句代码的用途。当然,我们可以用注释随便写点什么,比如说 “`# 哇塞我的第1行代码太帅了`”或者“`# 今天心情不大好就写到这儿吧`”等等。如果你乐意,那么完全可以在注释里偷偷写一部小说,就像《倚天屠龙记》里有人在《楞伽经》夹缝处写下《九阳真经》一样。 有人读到这里,可能会退缩了:sqrt,开玩笑,我怎么记得住啊!注意 R 入门第一秘诀: 不要被 R 吓住!现在,我们请出我们的第一位人气小助理:tab键。试试只输入 s,然后按 tab 键,就会看到RStudio给出的贴心提示,所有以 s 打头的函数和变量都列在里边了,用鼠标或箭头键选取就行了。在 s 后面接着输入q之后再按tab键试试。这个“tab小助理”我们以后天天时时分分秒秒都会用。 其实,常用的函数就那么几个,用几次就不需要贴心提示了。而且函数名称都很好记,sqrt 就是 square root 的缩写,顺便练了英文。实在记不住,那就用基本运算符来求乘方好了, `9 ^ 0.5` 即可。将来学了自定义函数之后,你甚至可以把sqrt改名叫做kaipingfang。我们在后面的学习中,会经常针对同一个问题给出多个解决方案,条条道路通罗马,R很灵活的,随便挑一个你喜欢的方案拿去用就行了。 **小贴士 1.1** R 菜鸟入门三大秘诀 第一秘诀:不要害怕!学R非难事,谁都可以R(Anyone can R)。 第二秘诀:能用就行!只要能完成工作,R代码写得漂亮与否并不重要。如果你有两个解决办法,那就选用你熟悉的那个。将来时间有富余的话再试另一个。 第三秘诀:与人分享!如果你的R 代码是一把刀,那么分享就是磨刀,越磨越快。 常用函数都可以顾名思义:四舍五入`round()`, 截取整数`trunc()`, 开平方`sqrt()`,求绝对值`abs()`,指数函数`exp()`,自然对数函数 `log()`,以10为底的对数函数`log10()`,三角函数 `sin()`,`cos()`,`tan()`,`asin()`,`acos()`,`atan()`等等。 有些常数在R中已经定义好了,例如圆周率ππ,只要输入`pi`并运行 ``` pi ``` ``` ## [1] 3.141593 ``` 怎么只有这几位有效数字?我上幼儿园时就背下来了,精确度不够高啊。要提高精确度,需要用选项函数`option()`: ``` options(digits = 22) # 最大支持 22 位 pi ``` ``` ## [1] 3.1415926535897931 ``` `option()`函数运行一次后,以后的数字都会是指定的位数,直到重新运行一次,或者退出R。下面我们把位数改为默认值,7位: ``` options(digits = 7) pi ## [1] 3.141593 ``` 位数就变回来了。
👍 liangfengyouren, lixing, mycat, winniex, meixia, abss, namchau, annabellenoelle, waterfish0612, adejokeade, roxso, johnsonlai, cn-malaysia, iipoh06, yikloongye, yethui, pizzapai, davidke20, joeliew, riczlook, johnhooi, r3aperz, hkit98, auleo, andrewnoel, watersoo, vamos-amigo, elvinmas001, yumisee, ravima27, rose21, legendstick, aidenlee, eliselai, sphenix, piyanka, dashyboy, janicechua, kramuse, babajii, svtan, tamagoyaki, shenchensucc, chann, coindzs, jiangchen, deanliu, warofcraft, cnbuddy, pzhao, luneknight, rosatravels, jianghao, sweetieprincess, rivalhw, historylover, ethanlee, angelina6688, antone, inmylife, dapeng, xiaoshancun, maiyude, mrspointm, vandadream, breathewind, hhjjkk, lemooljiang, idx, abit, victory622, skenan, tvb, mbot, cheneats,