数据类型
- 矢量
- 列表
- 矩阵
- 数组
- 因子
- 数据帧
向量vectors
(即坐标运算)
vectors = c(1,5,7,8,9,5)
print(vectors)
print(class(vectors))#character
list列表
一个r对象,在列表中啥都能放,包括函数,整型,向量等
list1 <-list(c(2,5,30),9,5,sin)#向量,整型,函数sin
print(list1)
//输出
[[1]]
[1] 2 5 3
[[2]]
[1] 21.3
[[3]]
function (x) .Primitive("sin")
Matrices 矩阵
# Create a matrix.
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)
//输出
[,1] [,2] [,3]
[1,] "a" "a" "b"
[2,] "c" "b" "a"
array数组
# Create an array.
a <- array(c('green','yellow'),dim = c(3,3,2))
print(a)
//输出
, , 1
[,1] [,2] [,3]
[1,] "green" "yellow" "green"
[2,] "yellow" "green" "yellow"
[3,] "green" "yellow" "green"
, , 2
[,1] [,2] [,3]
[1,] "yellow" "green" "yellow"
[2,] "green" "yellow" "green"
[3,] "yellow" "green" "yellow"
factors因子
# Create a vector.
apple_colors <- c('green','green','yellow','red','red','red','green')
# Create a factor object.
factor_apple <- factor(apple_colors)
# Print the factor.
print(factor_apple)
print(nlevels(factor_apple))
//输出
[1] green green yellow red red red yellow green
Levels: green red yellow
# applying the nlevels function we can know the number of distinct values
[1] 3
data frame数据帧
# Create the data frame.
BMI <- data.frame(
gender = c("Male", "Male","Female"),
height = c(152, 171.5, 165),
weight = c(81,93, 78),
Age = c(42,38,26)
)
print(BMI)
//输出
gender height weight Age
1 Male 152.0 81 42
2 Male 171.5 93 38
3 Female 165.0 78 26
变量
R的变量命名和其他有些许不同,如下:
变量名 | 合法性 | 原因 |
---|---|---|
var_name2. | 有效 | 有字母,数字,点和下划线 |
VAR_NAME% | 无效 | 有字符’%’。只有点(.)和下划线允许的。 |
2var_name | 无效 | 以数字开头 |
.var_name, var.name | 有效 | 可以用一个点(.),但启动点(.),不应该后跟一个数字。 |
.2var_name | 无效 | 起始点后面是数字使其无效。 |
_var_name | 无效 | 开头_这是无效的 |
赋值也有些许不同
将右值赋给左变量:
<-
<<-
=
将左值赋给右变量:
->
->>
变量命名空间
在R中可以通过ls()函数来对环境中命名的变量进行操作或者查找,实例:
//显示所有变量
print(ls())
//模式匹配变量
# List the variables starting with the pattern "var".
print(ls(pattern = "var"))
//rm删除变量
//单个
rm(var.3)
print(var.3)
//全部删除
rm(list = ls())
print(ls())
运算符
算术运算符
运算符 | 描述 | 例 |
---|---|---|
+ | 两个向量相加 | v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v+t) 它产生以下结果 -10.0 8.5 10.0 |
- | 两个向量相减 | v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v-t) 它产生以下结果 --6.0 2.5 2.0 |
* | 两个向量相乘 | v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v*t) 它产生以下结果 -16.0 16.5 24.0 |
/ | 将第一个向量与第二个向量相除 | v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v/t) 当我们执行上面的代码,它产生以下结果 -0.250000 1.833333 1.500000 |
%% | 两个向量求余 | v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v%%t) 它产生以下结果 -[1] 2.0 2.5 2.0 |
%/% | 两个向量相除求商 | v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v%/%t) 它产生以下结果 -[1] 0 1 1 |
^ | 将第二向量作为第一向量的指数 | v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v^t) 它产生以下结果 -[1] 256.000 166.375 1296.000 |
关系运算符
运算符 | 描述 | 例 |
---|---|---|
> | 检查第一向量的每个元素是否大于第二向量的相应元素。 | v <- c(2,5.5,6,9) t <- c(8,2.5,14,9) print(v>t) 它产生以下结果 -FALSE TRUE FALSE FALSE |
< | 检查第一个向量的每个元素是否小于第二个向量的相应元素。 | v <- c(2,5.5,6,9) t <- c(8,2.5,14,9) print(v < t) 它产生以下结果 -TRUE FALSE TRUE FALSE |
== | 检查第一个向量的每个元素是否等于第二个向量的相应元素。 | v <- c(2,5.5,6,9) t <- c(8,2.5,14,9) print(v == t) 它产生以下结果 -FALSE FALSE FALSE TRUE |
<= | 检查第一向量的每个元素是否小于或等于第二向量的相应元素。 | v <- c(2,5.5,6,9) t <- c(8,2.5,14,9) print(v<=t) 它产生以下结果 -TRUE FALSE TRUE TRUE |
> = | 检查第一向量的每个元素是否大于或等于第二向量的相应元素。 | v <- c(2,5.5,6,9) t <- c(8,2.5,14,9) print(v>=t) 它产生以下结果 -FALSE TRUE FALSE TRUE |
!= | 检查第一个向量的每个元素是否不等于第二个向量的相应元素。 | v <- c(2,5.5,6,9) t <- c(8,2.5,14,9) print(v!=t) 它产生以下结果 -TRUE TRUE TRUE FALSE |
逻辑运算符
运算符 | 描述 | 例 |
---|---|---|
& | 它被称为元素逻辑AND运算符。 它将第一向量的每个元素与第二向量的相应元素组合,并且如果两个元素都为TRUE,则给出输出TRUE。 | v <- c(3,1,TRUE,2+3i) t <- c(4,1,FALSE,2+3i) print(v&t) 它产生以下结果 -TRUE TRUE FALSE TRUE |
| | 它被称为元素逻辑或运算符。 它将第一向量的每个元素与第二向量的相应元素组合,并且如果元素为真,则给出输出TRUE。 | v <- c(3,0,TRUE,2+2i) t <- c(4,0,FALSE,2+3i) print(v|t) 它产生以下结果 -TRUE FALSE TRUE TRUE |
! | 它被称为逻辑非运算符。 取得向量的每个元素,并给出相反的逻辑值。 | v <- c(3,0,TRUE,2+2i) print(!v) 它产生以下结果 -FALSE TRUE FALSE FALSE |
运算符 | 描述 | 例 |
---|---|---|
&& | 称为逻辑AND运算符。 取两个向量的第一个元素,并且只有两个都为TRUE时才给出TRUE。 | v <- c(3,0,TRUE,2+2i) t <- c(1,3,TRUE,2+3i) print(v&&t) 它产生以下结果 -TRUE |
|| | 称为逻辑OR运算符。 取两个向量的第一个元素,如果其中一个为TRUE,则给出TRUE。 | v <- c(0,0,TRUE,2+2i) t <- c(0,3,TRUE,2+3i) print(v||t) 它产生以下结果 -FALSE |
赋值运算符
运算符 | 描述 | 例 |
---|---|---|
<−or=or<<− | 称为左分配 | v1 <- c(3,1,TRUE,2+3i) v2 <<- c(3,1,TRUE,2+3i) v3 = c(3,1,TRUE,2+3i) print(v1) print(v2) print(v3) 它产生以下结果 -3+0i 1+0i 1+0i 2+3i 3+0i 1+0i 1+0i 2+3i 3+0i 1+0i 1+0i 2+3i |
->or->> | 称为右分配 | c(3,1,TRUE,2+3i) -> v1 c(3,1,TRUE,2+3i) ->> v2 print(v1) print(v2) 它产生以下结果 -3+0i 1+0i 1+0i 2+3i 3+0i 1+0i 1+0i 2+3i |
其他运算符
运算符 | 描述 | 例 |
---|---|---|
: | 冒号运算符。 它为向量按顺序创建一系列数字。 | v <- 2:8 print(v) 它产生以下结果 -2 3 4 5 6 7 8 |
%in% | 此运算符用于标识元素是否属于向量。 | v1 <- 8 v2 <- 12 t <- 1:10 print(v1 %in% t) print(v2 %in% t) 它产生以下结果 -TRUE FALSE |
%*% | 此运算符用于将矩阵与其转置相乘。 | M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE) t = M %*% t(M) print(t) 它产生以下结果 -[,1] [,2] [1,] 65 82 [2,] 82 117 |
决策
if…else if…else
if () {
} else if (){
} else {
}
switch
- 如果
expression
的值不是字符串,那么它被强制为整数。 - 在交换机中可以有任意数量的
case
语句。 每个案例后面都跟要比较的值和冒号。 - 如果整数的值在
1
和nargs() - 1
(参数的最大数目)之间,则对case
条件的相应元素求值并返回结果。 - 如果表达式求值为字符串,那么该字符串与元素的名称匹配。
- 如果有多个匹配,则返回第一个匹配元素。
- 无默认参数可用。
- 在没有匹配的情况下,如果有一个未命名的元素…它的值被返回。 (如果有多个这样的参数,则返回错误。)
case中可以是函数或者一条语句等
switch(expression, case1, case2, case3....)
//实例
x <- switch(
3,
"first",
"second",
"third",
"fourth"
)
print(x)
//输出
[1] "third"
//实例
switch(1,2*3,sd(1:5),runif(3)) #返回(2*3,sd(1:5),runif(3))list中的第一个成分
switch(2,2*3,sd(1:5),runif(3)) #返回第二个成分
switch(3,2*3,sd(1:5),runif(3)) #返回第三个成分
/或
switch (2,
case = 2*3,case = sd(1:6),case = runif(3)
)
//输出
[1] 6
[1] 1.581139
[1] 0.31508117 0.04610938 0.19489747
R包
在R语言中使用一个第三方库包,其实也是同python一样如果需要在环境中使用包,除了环境中自带的包,其他都要事先加载出来,安装。
获取包含R包的库位置
.libPaths()
获取所有已安装的所有软件包列表
library()
获取在当前环境中已加载的包
search()
有两种方法来添加新的R包。 一个是直接从CRAN目录安装,另一个是将软件包下载到本地系统并手动安装它。
直接从CRAN安装
以下命令直接从CRAN网页获取软件包,并将软件包安装在R环境中。 可能会提示您选择最近的镜像。 根据您的位置选择一个。
install.packages("Package Name")
# Install the package named "XML".
install.packages("XML")
手动安装包
转到链接R Packages下载所需的包。 将包作为.zip文件保存在本地系统中的适当位置。
现在您可以运行以下命令在R环境中安装此软件包。
install.packages(file_name_with_path, repos = NULL, type = "source")
# Install the package named "XML"
install.packages("E:/XML_3.98-1.3.zip", repos = NULL, type = "source")
装载包到库中
在包可以在代码中使用之前,必须将其加载到当前R环境中。 您还需要加载先前已安装但在当前环境中不可用的软件包。
使用以下命令加载包:
library("package Name", lib.loc = "path to library")
# Load the package named "XML"
install.packages("E:/XML_3.98-1.3.zip", repos = NULL, type = "source")
循环
Sr.No. | 循环类型和描述 |
---|---|
1 | repeat循环多次执行一系列语句,并简化管理循环变量的代码。 |
2 | while循环在给定条件为真时,重复语句或语句组。 它在执行循环体之前测试条件。 |
3 | for循环像while语句,不同之处在于它测试在循环体的端部的条件。 |
Sr.No. | 控制语句和描述 |
---|---|
1 | break语句终止循环语句,并将执行转移到循环后立即执行的语句。 |
2 | next语句next语句模拟R语言switch语句的行为。 |