Class 03 - R语言的 Vector与 列表 list
- R语言语法
- 脚本文件的创建、保存、和修改名称
- 第一个函数
- 使用帮助功能查看函数详细说明
- 语法问题
- 变量与赋值
- 定义变量名称格式
- 调用变量
- R中的数据结构
- Vectors (向量)
- 创建向量
- 查看向量的性质
- 查看数据类型 typeof()
- 查看数据长度 length()
- 检查特定数据类型
- 向量的命名
- Lists(列表)
- 创建列表
- 查看列表的结构
- 列表的命名
R语言语法
前面我们已经完成了R和RStudio的安装,和一些简单的介绍。
现在我们把重点转向使用RStudio进行实际的编程应用。
首先分享在RStudio中使用R编程的基础知识。
然后我们将继续在RStudio中编码。
我们将讨论执行计算的语法以及所有代码的标准和命名约定。
当你在学习一项新技能,你都应该从基础开始。用R编程也不例外。
你将会了解到R的一些基本概念,包括函数、注释、变量、数据类型、向量和管道。
其中一些术语可能你会有些熟悉。例如,在使用电子表格和SQL中都会使用过函数。函数是用于在R语言(或者Python,或者其他编程语言)中执行特定任务的可重用代码体。函数以函数名(如print或paste)开头,通常后跟括号中的一个或多个参数。参数是R语言中的函数运行所需要的信息。
下面我们开始输入一个函数(print)来开始我们的学习。
脚本文件的创建、保存、和修改名称
首先打开RStudio(后面所有的代码练习等都是在RStudio中运行),之后新建一个脚本文件来编写和保存代码。点击左上角菜单栏的 File → New File → R Script ,创建的脚本文件。
创建完成之后,默认的名称为 Untited1。
如果想要自定义文件名称,这时候我们可以按快捷键 Ctrl + s
来先保存这个脚本文件,可以自己找个位置把脚本保存起来,还可以变更文件的名字。
当文件保存过之后,还想要修改文件名称,这时候就直接在文件名称的位置点击鼠标右键,就会有修改名称的选项了。
(在刚创建还没有保存脚本的时候是不能这样修改文件名称的)
第一个函数
当创建好脚本文件之后。现在我们只需要在文件中添加代码字符然后让程序运行。
在脚本中输入 print("这是一个函数")
,然后点击 Run 来运行代码。(需要选中全部需要执行的代码,否则会执行光标所在的一行或者最后一行)
在下面控制台区域就会显示输出效果。
这就完成了一个函数的使用(也是代码输入和运行的流程)。
使用帮助功能查看函数详细说明
其实不同的函数有不同的用法,如果你想了解一个函数的更多信息,可以使用帮助功能。
帮助功能其实是一个很有用的功能,在你不太清楚这个函数的用法时可以使用帮助功能来查看函数的详细说明,在说明中会介绍函数的用法,需要的参数说明,还有使用的例子等。
使用帮助功能来查看函数信息有两种操作方法:
第一种: 使用 ?+ 函数() 来获取帮助信息:
如查看print()
函数的详细信息,输入 ?print()
点击运行,这时候在右下区域就会显示print()
函数的详细信息。
第二种: 使用 help(print)
来获取帮助信息:
如查看print()
函数的详细信息,输入 help(print)
点击运行。
两种帮助的区别就是一个需要输入函数名成和() 另一个只需要输入函数名字就可以了,根据个人习惯使用哪一种都没问题。
语法问题
在R语言中,函数是区分大小写的,比如前面的print()
函数,如果把首字母大写,就会识别为不同的函数,如果没有这个函数就会报错。
所以使用函数的时候一定要注意大小写
变量与赋值
变量也可以被称为对象。
变量可以用来表示一些值(信息数据),方便在任何需要的时候调用。在R中命名变量时,可以使用简短的短语。
定义变量名称格式
- 变量名应该以字母开头,可以包含数字和下划线。
比如:5house 以数字开头的样子是不行的,如果改写为 house5 是OK的。 - 变量名也区分大小写,建议定义变量的时候使用小写字母。
- 在R 语言中 一般使用
<-
来为变量赋值,也可以用=
来为变量复制(用=赋值有时候会报错。。。不过比较少)。 - 在定义变量名称的时候尽量有一定的意义,最好不要就随便的a,b,c,d这样来。
举个例子:
比如定义一个房子house_price_1
的价格为10000
。当变量设置成功后,在右上环境区域会显示定义储存过的变量名称以及变量的值
调用变量
当我们定义好了一个变量后该如何使用他呢?
其实很简单,直接在代码中输入变量的名称就行了,在代码执行的时候会自动去调用函数所储存的值。
举个例子:前面定义了一个房子的价格 house_price_1
,现在我们需要知道这个房子打7折的时候是多少钱,那么我们需要输入 house_price_1*0.7
来计算70%的价格为多少。
可以看到执行结果为7000
,程序调用了函数中的值来去计算。
好了一些基本操作就介绍到这里,下面就开始提升难度。。。。
R中的数据结构
在程序设计中,数据结构是一种组织和存储数据的格式。理解数据结构非常重要,因为在使用R进行数据分析时,你将经常使用它们。
R编程语言中最常见的数据结构包括:
- Vectors
- Data frames
- Matrices
- Arrays
下面,将介绍向量和列表的基本属性,以及如何使用R代码创建它们。
Vectors (向量)
向量是一组相同类型的数据元素,存储在R中的序列中。不能拥有既包含逻辑和数字的向量,同向量中的数据类型是相通的。
向量有六种主要类型 :
- 逻辑向量
- 整数向量
- 双精度向量
- 字符向量(包含字符串)
- 复杂向量和原始向量
最后两种:复杂向量和原始向量——在数据分析中并不常见,因此我们重点讨论前四种。整数向量和双精度向量一起被称为数值向量,因为它们都包含数字。下表总结了四种主要类型:
格式 | 描述 | 样例 |
---|---|---|
Logical | True/False | TRUE |
Integer | 正整数和负整数 | 5 |
Double | 十进制值 | 18.359 |
Character | 字符串和字符值 | “R语言” |
这四种主要向量类型之间的关系层次结构:
创建向量
创建向量的一种方法是使用c()
函数(称为“combine”函数)。R中的c()
函数将多个值组合成一个向量。在R语言中,这个函数只是字母“c”,后面跟着你想要的向量中的值,用逗号分隔:c(x, y, z,…)
。
可以使用c()
函数将数字数据存储在向量中。
# 创建数字向量
c(3.5 , 5.1 , 201.1,33.6)
要使用c()
函数创建整数向量,必须将字母“L
”直接放在每个数字后面。
# 创建整数类向量
c(3L,11L,13L)
还可以创建字符类型的向量或逻辑类型的向量。
# 创建字符类向量
c("Jack" , "老王" , "Sara")
# 创建逻辑类向量
c(FALSE, FALSE, TRUE)
查看向量的性质
创建的每个向量都有两个关键属性: 类型和长度。
查看数据类型 typeof()
你可以使用typeof()
函数来查看向量的数据类型。将向量的代码放在函数的括号内。运行这个函数时,R就会输出这个向量的类型。
# 查看向量的数据类型
typeof(c("Jack" , "老王" , "Sara"))
上面的例子中typeof()
函数的输出是" character
"字符型数据。同样的,如果你把向量换为别的数据类型,那么输出的就会变为对应的数据类型
# 查看向量的数据类型
typeof(c(FALSE, FALSE, TRUE))
查看数据长度 length()
通过使用length()
函数,可以确定现有向量的长度——即包含的元素数量。
举个例子,我们先用赋值操作符将vector赋值给变量x
,然后对该变量应用length()
函数。当我们运行这个函数时,R会返回这个向量的长度值为3
。
# 查看数据长度
x = c("Jack" , "老王" , "Sara")
length(x)
检查特定数据类型
还可以通过使用is函数来检查向量是否为特定类型:
- is.logical() – 逻辑类型
- is.double() – 浮点数值类型
- is.integer() – 整数类型
- is.character() – 字符类型
例如,使用is.character()
来检查c("Jack" , "老王" , "Sara")
,返回结果为TRUE
。因为这个向量确实是字符类型数据。
# 检查数据类型
x = c("Jack" , "老王" , "Sara")
is.character(x)
下面换用其他的来检查同样一个向量数据c("Jack" , "老王" , "Sara")
,其他三个都范围的值为否定的FALSE
。
# 查看数据类型
x = c("Jack" , "老王" , "Sara")
#是否为逻辑类型数据
is.logical(x)
# 是否为整数型数据
is.integer(x)
# 是否为浮点型数据
is.double(x)
向量的命名
所有类型的向量都可以命名。名称对于编写可读代码和描述r中的对象非常有用。您可以使用names()
函数命名向量的元素。
举个例子,让我们将向量name
赋值给一个包含三个元素的新向量age
,可以使用names()
函数为vector的每个元素分配不同的名称。
# 向量命名
# 定义两组向量数据
name <- c("Jack" , "老王" , "Sara")
age <- c(33,23,26)
# 为向量age中的数据命名
names(age) <- name
# 输出向量age
age
当您运行代码时,R显示向量age的第一个元素命名为Jakc
,第二个元素命名为老王
,第三个元素命名为Sara
。
需要注意,向量只能包含相同类型的元素。
如果希望在同一数据结构中存储不同类型的元素,可以使用列表。
Lists(列表)
创建列表
列表不同于原子向量,因为它们的元素可以是任何类型,如日期、数据帧、向量、矩阵等。列表甚至可以包含其他列表。
您可以使用list()
函数创建一个列表。与c()
函数类似,list()
函数只是一个列表,后面跟着括号内列表中想要的值:list(x, y, z,…)
。
举个例子:
我们创建了一个包含四种不同类型元素的列表:字符(“老王”
)、整数(10L
)、双精度数(3.2
)和逻辑(TRUE
)。
# List 列表
# 创建列表
list("老王",10L,3.2,TRUE)
而且,列表可以包含其他列表。我们甚至可以将列表存储在列表中的列表中,以此类推。
# List 列表
# 创建列表
list(list(list("老王",10L,3.2,TRUE)))
查看列表的结构
如果想知道列表包含什么类型的元素,可以使用str()
函数。只需要将列表的代码放在函数的圆括号内。当运行该函数时,R将通过描述列表的元素及其类型来显示列表的数据结构。
举个例子:
程序会返回列表的长度,还有每个数据的数据格式。
# List 列表
# 查看列表中数据的数据类型
str(list("老王",10L,3.2,TRUE))
让我们再来使用str()
函数查看多个嵌套的列表是的结构。
首先,让我们将列表赋值给变量x
,以便在str()
函数中更容易输入。让我们运行这个函数。
# List 列表
# 查看列表中数据的数据类型
x <- list(list(list("老王",10L,3.2,TRUE)))
str(x)
$
符号的缩进反映了该列表的嵌套结构。这里有三个层次(所以列表中的列表中有一个列表)。哈哈有点绕了
列表的命名
和向量一样,列表也可以命名。当用list()
函数创建列表时,你就可以给它的元素命名:
# List 列表命名
list("老王"= 33,"身高"=10L,"视力" = 3.2)