R Note by RGX
1.第一个R程序
第一个程序都是从“Hello World!”开始的。
1 | print('Hello World!') |
OK,它就是如此简单。
1.1 R基础
1.1.1 R的赋值
R的赋值有新旧版本之分。在新版本中,可以使用 =
来进行赋值,而在旧的版本中,只支持->
来赋值。
1 | // 你可以使用 = 来赋值,也可以使用<-来赋值 |
1.1.2 R的变量
R有效的变量名称由字母,数字以及点号 . 或下划线 _ 组成,变量名称以字母或点开头。
查看R的已有的(还未从内存释放掉的)自定义变量:
1 | ls() |
1.1.3 print()输出
print(x, …)
S3 method for class ‘factor’
print(x, quote = FALSE, max.levels = NULL,
width = getOption(“width”), …)S3 method for class ‘table’
print(x, digits = getOption(“digits”), quote = FALSE,
na.print = “”, zero.print = “0”,
right = is.numeric(x) || is.complex(x),
justify = “none”, …)S3 method for class ‘function’
print(x, useSource = TRUE, …)
print()用来输出数字、字符等,就和其他的编程语言那样,但是除了这些之外,print()似乎还有其他更多的用途,在不同的地方用途不一样。
1.1.4 cat()函数
cat(… , file = “”, sep = “ “, fill = FALSE, labels = NULL,
append = FALSE)
cat()函数可以拼接输出结果的多个字符串。cat()函数会在每两个元素之间加上自动加上空格。
1 | cat(a,'我') |
除此之外,cat()函数还被用来之间输出结果到文件。
1 | cat('Hello R!',file='./Hello.r') |
?绝对路径与相对路径
绝对路径:文件真实的存放位置
相对路径:相对于当前位置的路径
.
表示当前目录,..
表示上一级目录,~
表示家目录
1.1.5 sink()函数
sink(file = NULL, append = FALSE, type = c(“output”, “message”),
split = FALSE)sink.number(type = c(“output”, “message”))
sink() 函数可以把控制台输出的文字直接输出到文件中去,覆盖写入。若需要追加写入,则需要设置append参数。
1.1.6 readlines()函数
readlines()函数从一个文件中读取其字符串。
readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE,
encoding = “unknown”, skipNul = FALSE)
1.2 R的使用
1.2.1 工作目录
getwd() : 获取当前工作目录
getwd() : 设置当前工作目录
1.2.2 R的注释
R只支持单行注释。用#
就可以。
1.2.3 查看与转换数据类型,class、mode和typeof
is和as
is用来判断是否为某一数据类型,返回逻辑值。as用于转换为某一类。
as(object, Class, strict=TRUE, ext)
as(object, Class) <- value
class
mode
typoeof
2.R的基础运算
2.1 数字运算
符号 | 含义 |
---|---|
() | 括号 |
^ | 乘方 |
%% | 求余 |
%/% | 整除 |
* | 乘 |
+ | 加 |
- | 减 |
2.2 关系运算
运算符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
== | 等于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
R支持向量运算,如果为两个向量之间比大小,那就是向量对应的元素在比
2.3 逻辑运算符
逻辑运算符比较两个向量,将第一向量与第二向量的每个元素进行比较,结果返回一个布尔值
运算符 | 描述 |
---|---|
& | 两个元素都为 TRUE,则结果为 TRUE,否则为 FALSE。 |
| | 如果两个元素中有一个为 TRUE,则结果为 TRUE,如果都为 FALSE,则返回 FALSE |
! | 取相反的逻辑值 |
&& | 只比较两个向量的第一个元素,如果两个元素都为 TRUE,则结果为 TRUE,否则为 FALSE。 |
|| | 只比较两个向量的第一个元素,,如果两个元素中有一个为 TRUE,则结果为 TRUE,如果都为 FALSE,则返回 FALSE。 |
2.4 赋值运算符
R语言的赋值运算符很多
运算符 | 描述 |
---|---|
= | 向左赋值 |
<- | 向左赋值 |
<<- | 向左赋值 |
-> | 向右赋值 |
->> | 向右赋值 |
2.5 其他运算符
R 语言还包含了一些特别的运算符。
运算符 | 描述 |
---|---|
: | 创建一系列数字的向量 |
%in% | 用于判断元素是否在向量里,返回布尔值,有的话返回 TRUE,没有返回 FALSE。 |
%*% | 用于矩阵与它转置的矩阵相乘。 |
2.6 数学函数Math
常用的数学函数 | 描述 |
---|---|
sqrt(n) | n的平方根 |
exp(n) | 自然对数e的n次方 |
log(m,n) | m的对数函数,返回n的几次方等于m |
log10(m) | 相当于log(m,10) |
round(m[,n]) | 对 n 保留四舍五入取整/ m 位小数四舍五入 |
ceiling(n) | 向上取整 |
floor(n) | 向下取整 |
三角函数 | |
sin() | |
cos() | |
tan() | |
asin() | |
acos() | |
atan() | |
概率论与数理统计 | |
dnorm() | |
pnorm() | |
qnorm() | |
rnorm() |
注意:R 中的 round 函数有些情况下可能会”舍掉五”。
当取整位是偶数的时候,五也会被舍去,这一点与 C 语言有所不同。
R 的三角函数是弧度制。
它们的名字都以 norm 结尾,代表”正态分布”。
分布函数名字的前缀有四种:
- d - 概率密度函数
- p - 概率密度积分函数(从无限小到 x 的积分)
- q - 分位数函数
- r - 随机数函数(常用于概率仿真)
3. R的数据类型
有时候,经常会提到一个东西:数据类型。而R语言与其他编程语言不同,它的数据类型为:
- 数字:1,2,3,4…
- 字符串:’a’,’b’,”c”…
- 布尔值(逻辑):TRUE,FALSE
4. R的对象类型与数据结构
4.1 向量 Vector
向量是最基本的对象类型。是一维的数据结构,可以包含多种数据类型,例如:整数、浮点数、字符等。
创建向量
S3 Generic function
c(…)
Default S3 method:
c(…, recursive = FALSE, use.names = TRUE)
c()常常被用于创建一个列表或一个向量。
向量运算
1 | a=c(1,2) |
这里把两个二维向量相加,得到一个新的二维向量
1 | > a=c(1,2) |
向量的下标
使用[ ]
来取得元素,但是R语言与其他语言不同,下标表示是第几个元素。向量中的每一个元素可以通过下标单独取出:
1 | > a=c(1,2,3,4,9) |
除此之外,向量的下标还可以有别的用途。比较常见的是:
切片:
1 | > a=c(1,2,3,4,9) |
去除某一项:
!下标可以为负,表示去掉第n个,然后返回去掉后的向量,并不会修改原向量的值。这里和其他编程语言稍有不同。
向量统计
向量生成
4.2 列表 List
4.3 矩阵 Matrix
4.4 数组 Array
4.5 因子 Factor
4.6 数据框 DataFrame
4.7 日期和时间 Dates and Times
4.8 复数 Complex
4.9 逻辑型 Logical
4.10 NULL
4.11 环境 Environment
4.12 函数 Function
4.13 模型 Model
4.14 公式 Formula