R 笔记

数据类型

  • 矢量
  • 列表
  • 矩阵
  • 数组
  • 因子
  • 数据帧

向量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语句。 每个案例后面都跟要比较的值和冒号。
  • 如果整数的值在 1nargs() - 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.循环类型和描述
1repeat循环多次执行一系列语句,并简化管理循环变量的代码。
2while循环在给定条件为真时,重复语句或语句组。 它在执行循环体之前测试条件。
3for循环像while语句,不同之处在于它测试在循环体的端部的条件。
Sr.No.控制语句和描述
1break语句终止循环语句,并将执行转移到循环后立即执行的语句。
2next语句next语句模拟R语言switch语句的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值