R基础语法第 1 课---数据类型和赋值语法

按照我们学习其他语言的习惯,都是先学习一门语言的数据类型。

所以我们就先从R语言的数据类型开始启程,在本篇中,我们将一起学习到以下内容:

  1. R语言数据类型
  2. R语言的三种赋值方法

在这里插入图片描述

一、R语言数据类型

在R语言中,没有类似与C一样的显示定义数据类型,R语言通过分配R对象的方式给数据分配内存,其中R对象的数据类型为其中存储的变量的数据类型。

常见的基本R数据类型向量有以下六种:

  • Logical(逻辑型)
  • Numeric(数字)
  • Integer(整型)
  • Complex(复合型)
  • Character(字符)
  • Raw(原始型)

同时,除了以上的六种数据类型,R还支持六种特殊的数据类型

  • Vectors 向量
  • Lists 列表
  • Matrices 矩阵
  • Arrays 数组
  • Factors 因子
  • Data Frames 数据帧

接下来,我们通过栗子来学习相关的概念,毕竟如果单靠文字叙述还是显得比较单调空洞,来一些实例可能容易理解些。

注:
one、所有例子皆在RStudio中运行截图
two、R语言中的class函数会返回数据类型,以下例子会用到这个函数

1、六种基本类型向量

1.1、Logical(逻辑型)
逻辑型只有两种取值,True 和False(类似于C++的bool)
在这里插入图片描述
1.2、Numeric(数字)
用于存储数字变量
在这里插入图片描述
1.3、Integer(整型)
用于存储整型变量
在这里插入图片描述
1.4、 Complex(复合型)
就是数学中的复数
在这里插入图片描述
1.5、Character(字符)
字符变量,声明时用单引,或者双引号括出
在这里插入图片描述在这里插入图片描述
1.6、Raw(原始型)
原始型向量的数据被保存为

2、六种数据类型
重温一遍,这六种数据类型分别是:向量(Vectors),列表(list),矩阵(matrices),数组(array),因子(factor),数据帧(data frames)

2.1、 向量
在R语言中,向量类型可以由c()函数进行声明,同时向量数据可以进行加减乘除,逻辑运算,排序等向量运算

同样,来一个栗子学习👇

v1 <- 1:10  #创建一个多元素向量
cat(v1,'类型是:',class(v1),'\n')
#1 2 3 4 5 6 7 8 9 10 类型是: integer

v2 <- c('you','me','love',5,TRUE)  #通过c()函数创建向量
cat(v2,'类型是:',class(v2),'\n')
#you me love 5 TRUE 类型是: character

v3 <- seq(5, 9, by = 0.4) #通过seq()函数创建向量
cat(v3,'类型是:',class(v3),'\n')
#5 5.4 5.8 6.2 6.6 7 7.4 7.8 8.2 8.6 9 类型是: numeric

#以下方式访问向量
print(v2[0]) #注意看v2[0]中存储的数据
#character(0)

cat(v2[1],'\n') 
#   you 

cat(v3[c(1,3,4)],'\n')
#5 5.8 6.2 

cat(v2[c(-1,-3)],'\n') 
#me 5 TRUE

以上代码中的print,cat都是输出函数,#是R语言的注释,R语言中不支持多行注释每条输出函数下的注释,都是他们对应的输出。

再来个栗子了解下向量的运算吧:

v1 <- 1:10
v2 <- 11:20
print(v1+v2) #加
print(v1-v2) #减
print(v1*v2) #乘
print(v2/v1)  #除
print(v2 %/% v1) #整除
print(v2 %% v1) #求余
print(v2^v1)  #指数运算

在这里插入图片描述

2.2、列表
向量的列表是个神奇的数据类型,一个列表可以包含不同类型的向量,你可以往里面插入向量,矩阵,函数,甚至是另一个列表。。。

他通过list()函数来声明。

栗子👇

list1 <- list(c(1,2,3),'哈哈',9,matrix(1:10,nrow = 2,ncol = 5,byrow = TRUE),list(c('a','b','c')))
print(list1)

在这里插入图片描述那如何访问矩阵的元素呢?有两个方法进行访问:
方法一:直接用列表名加索引,例 list1[1]
方法二:先给列表元素命名,再利用$符号访问列表内容,例 list1$2

栗子👇

list1 <- list(c(1,2,3),'哈哈',9,matrix(1:10,nrow = 2,ncol = 5,byrow = TRUE),list(c('a','b','c')))
names(list1) <- c('c','str','num','matrix','list') #给列表元素进行命名
print(list1)

#访问列表元素
print(list1[1])
print(list1$str)

在这里插入图片描述
同样,我们可以利用 list1[1] <- c(‘1’)的方式进行对列表的更新

利用 list3 <- c(list1,list2)来进行列表的合并

一样,列表可以转换为向量,利用unlist()函数即可,以上面例子为例:
在这里插入图片描述

2.3、矩阵
矩阵通过函数matrix()进行创建,上面列表的例子我们也可以看到创建了个矩阵(不超纲,不超纲),现在就具体讲下矩阵的声明方式。

语法为:matrix(data, nrow, ncol, byrow, dimnames)
其中data是输入向量
nrow是创建的行数
ncol是创建的列数
byrow如果为TRUE,则矩阵按行排列
dimnames是行列名称

栗子👇:

m1 <- matrix(1:10,nrow = 2,ncol = 5,byrow = TRUE)
m2 <- matrix(11:20,nrow = 2,ncol = 5,byrow = FALSE)
rownames = c("row1", "row2")
colnames = c("col1", "col2", "col3", "col4", "col5")
m3 <- matrix(11:20,nrow = 2,ncol = 5,byrow = TRUE,dimnames = list(rownames,colnames))
print(m1)
print(m2)
print(m3)

在这里插入图片描述
矩阵的访问就类似于C语言的二维数组的访问,我们可以通过m1[1,1] 获取元素,取某行可以用m1[1,],取某列可以用m1[,1]。

在这里插入图片描述
运算:
矩阵的运算中加减乘除,就是对应元素进行运算。

如果需要计算矩阵乘法,就需要用%*%运算符

在这里插入图片描述

转置:
利用函数 t() 进行转置
在这里插入图片描述

2.4、数组
数组通过array来创建
array( data, dim, dimnames )
其中,data为输入向量,
dim为维度,如(2,3,2)即代表2行,3列,2个矩阵
dimnames为行列名

栗子👇:

v1 <- 1:5
v2 <- 10:20

row.names <- c('row1','row2','row3')
colnames <- c('col1','col2','col3','col4','col5')

a1 <- array(c(v1,v2),dim = c(3,5,2),dimnames = list(row.names,colnames))
print(a1)

#访问数组内容
print(a1[1,,1])
print(a1[1,3,1])
print(a1[1,3,2])
print(a1[,1,1]) 
print(a1[,,1])

在这里插入图片描述
2.5、因子
R语言中的,factor()可以统计数据的分类,找出输入向量的所有元素(其实相当于一个集合)

以上面的矩阵为例:
在这里插入图片描述
2.6、数据帧
数据帧是表或者二维阵列结构,其中每一列包含一个变量的值,并且每一行包含来自每一列的一组值。

数据帧的特性:

  • 列名称应为非空。
  • 行名称应该是唯一的。
  • 存储在数据帧中的数据可以是数字,因子或字符类型。
  • 每个列应包含相同数量的数据项。

栗子👇(输出太长啦,就不截图了,自己回家试试):

#创建
daframe <- data.frame(
  da_id = c(1:5),
  da_name = c('新','期','田','贞','好'),
  da_yanzhi = c(10,9,8,9,4)
)
print(daframe)

#得到数据帧的结构
str(daframe)
#获得数据帧摘要
print(summary(daframe))
#提取数据
r1 <- data.frame(daframe$da_id,daframe$da_yanzhi)  #方法一
print(r1)
r2 <- daframe[1:2,] #方法二,获取前两行
print(r2) 
r3 <- daframe[1:2,1:2]  #同理,可以获得前两行两列
print(r3)

#给数据帧添加数据
#1、添加行
daframe1 <- data.frame(
  da_id = 6,
  da_name = '吾',
  da_yanzhi = 10,
  stringsAsFactors = FALSE
)
finalframe <- rbind(daframe,daframe1)
print(finalframe)
#2、添加列
finalframe$height <- c(160,170,180,190,175,178)
print(finalframe)

二、常见的赋值语法

终于将数据类型学完了,接下来就来学习下在R语言中的三种赋值语法

在这里插入图片描述在R语言中,实现了左分配和右分配两种赋值语法

1、左分配:

  • <- 👈这个符号,我们上面都是用的这个运算符来进行赋值
  • = 👈这个符号,很常见,和C,C++等是一样的
  • <<- 👈这个符号,有点像左移运算符,但是。。并不是哦

2、右分配:

  • -> 👈这个符号,与左分配<-相反的方向,很简单明了
  • ->> 👈这个符号,同上🙂

老规矩,来个栗子👇:

str1 = '两姓联姻'
str2 <- '一堂缔约'
str3 <<- '良缘永结'
'匹配同称' -> str4
'永载鸳谱' ->> str5

cat(str1,str2,str3,str4,str5)

在这里插入图片描述
OK咯,第一课到此结束,下次继续~
在这里插入图片描述
下一学:R基础语法第2课—变量与运算符

原文链接:https://blog.youkuaiyun.com/the_sangzi_home/article/details/105461263

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值