R语言基本语法

  1. 命令提示符

    “ > ” 后面开始输入你的程序,具体如下。

    在这里,第一个语句先定义一个字符串变量myString,并将“Hello,World!”赋值其中,第二句则使用print()语句将变量myString的内容进行打印。

  2. R脚本文件

    我们最好是在脚本文件中编写代码来执行程序,然后在命令提示符下使用R解释器来执行并显示代码执行情况。例如,新建一个脚本,命名为test.R,编写下面的代码

  3. 注释符号

    注释能帮助您解释R语言程序中的脚本,它们在实际执行程序时会被解释器忽略。 单个注释使用#在程序语句的开头或者结尾写入。如上述代码所示。

  4. 变量:类型、赋值

    变量为我们提供了我们的程序可以操作的命名存储。 R语言中的变量可以存储原子向量,原子向量组或许多Robject的组合。 有效的变量名称由字母,数字和点或下划线字符组成。 变量名以字母或不以数字后跟的点开头。

    变量名合法性原因
    var_name2.有效有字母,数字,点和下划线
    VAR_NAME%无效有字符'%'。只有点(.)和下划线允许的。
    2var_name无效以数字开头
    .var_name, var.name有效可以用一个点(.),但启动点(.),不应该后跟一个数字。
    .2var_name无效起始点后面是数字使其无效。
    _var_name无效开头_这是无效的

    变量赋值:可以使用向左,向右和等于运算符来为变量分配值。 可以使用print()或cat()函数打印变量的值。 cat()函数将多个项目组合成连续打印输出。

    当我们执行上面的代码,它产生以下结果 -

    - 向量c(TRUE,1)具有逻辑和数值类的混合。 因此,逻辑类强制转换为数字类,使TRUE为1。

  5. 数据类型

    在R语言中,变量本身没有声明任何数据类型,而是获取分配给它的R - 对象的数据类型。 所以R称为动态类型语言,这意味着我们可以在程序中使用同一个变量时,一次又一次地更改变量的数据类型。

    当我们执行上面的代码,它产生以下结果 -

  6. 运算符

    R语言中拥有如下几种运算符类型:

    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 赋值运算符
    • 其他运算符
    算术运算符:下表显示了R语言支持的算术运算符。 操作符对向量的每个元素起作用。
    运算符描述
    +两个向量相加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
    关系运算符:下表显示了R语言支持的关系运算符。 将第一向量的每个元素与第二向量的相应元素进行比较。 比较的结果是布尔值。
    运算符描述
    >检查第一向量的每个元素是否大于第二向量的相应元素。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
    逻辑运算符:下表显示了R语言支持的逻辑运算符。 它只适用于逻辑,数字或复杂类型的向量。 所有大于1的数字被认为是逻辑值TRUE。将第一向量的每个元素与第二向量的相应元素进行比较。 比较的结果是布尔值。
    运算符描述
    &它被称为元素逻辑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
  7. 条件判断

    决策结构要求程序员指定要由程序评估或测试的一个或多个条件,以及如果条件被确定为真则要执行的一个或多个语句,如果条件为假则执行其他语句。以下是在大多数编程语言中的典型决策结构的一般形式

    做决定

    例1:

    当上面的代码被编译和执行时,它产生以下结果 -

    例2:

    当上面的代码被编译和执行时,它产生以下结果 -

    这里“Truth”和“truth”是两个不同的字符串。

    例3:if ... else if ... else语句

    if语句后面可以跟一个可选的else if ... else语句,这对于使用single if ... else if语句测试各种条件非常有用。

    当使用if,else if,else语句有几点要记住。

    • 如果可以有零或一个else,它必须在任何其他if之后。

    • 一个if可以有0到许多else if和它们必须在else之前。

    • 一旦一个else如果成功,没有任何剩余的else if或else将被测试。

      当上面的代码被编译和执行时,它产生以下结果

    例4:switch `语句允许根据值列表测试变量的相等性。 每个值都称为case,并且针对每种情况检查打开的变量。

    在 R 中创建 switch 语句的基本语法是

    以下规则适用于 switch语句:

    • 如果 expression 的值不是字符串,那么它被强制为整数。
    • 在交换机中可以有任意数量的 case语句。 每个案例后面都跟要比较的值和冒号。
    • 如果整数的值在 1nargs() - 1(参数的最大数目)之间,则对 case条件的相应元素求值并返回结果。
    • 如果表达式求值为字符串,那么该字符串与元素的名称匹配。
    • 如果有多个匹配,则返回第一个匹配元素。
    • 无默认参数可用。
    • 在没有匹配的情况下,如果有一个未命名的元素...它的值被返回。 (如果有多个这样的参数,则返回错误。)

    流程图

    img

    例:

    x <- switch(3, "first", "second", "third", "fourth" )

    print(x)

    当上面的代码被编译和执行时,它产生以下结果 -

    runif() 函数用于生成从 01区间范围内的服从正态分布的随机数:

    当上面的代码被编译和执行时,它产生以下结果 -

  8. 循环

    环路结构

    repeat循环多次执行一系列语句,并简化管理循环变量的代码。

    while循环在给定条件为真时,重复语句或语句组。 它在执行循环体之前测试条件。

    for循环像while语句,不同之处在于它测试在循环体的端部的条件。

     

  9. Package存储在R语言环境中名为“library”的目录下。

    获取已安装的所有软件包列表

    安装包:可以直接从CRAN安装,也可以手动安装包。

    打开链接R Packages下载所需要的包,将包作为.zip文件保存在本地系统中的适当位置。现在您可以运行以下命令在R环境中安装此软件包。

    加载包:使用之前,必须将其加载到当前R环境中。 使用以下命令加载包:

  10. 函数

    函数是一组组合在一起以执行特定任务的语句。 R 语言具有大量内置函数,用户可以创建自己的函数。

    R 语言的函数定义的基本语法如下

    函数的不同部分:

    • 函数名称 -这是函数的实际名称。 它作为具有此名称的对象存储在 R 环境中。
    • 参数 -参数是一个占位符。 当函数被调用时,你传递一个值到参数。 参数是可选的; 也就是说,一个函数可能不包含参数。 参数也可以有默认值。
    • 函数体 -函数体包含定义函数的功能的语句集合。
    • 返回值 -函数的返回值是要评估的函数体中的最后一个表达式。

     

  11. 字符串

    有效字符串的示例

    以下示例阐明了在 R 语言中创建字符串的规则。

    无效字符串的示例

  12. 向量

    向量是最基本的R语言数据对象。

    多元素向量:对数值数据使用冒号运算符

    使用sequence (Seq.)序列运算符

    使用C()函数:如果其中一个元素是字符,则非字符值被强制转换为字符类型。

    访问向量元素:使用索引访问向量的元素。 []括号用于建立索引。 索引从位置1开始。

    向量运算:可以添加,减去,相乘或相除两个相同长度的向量,将结果作为向量输出。

    向量元素排序:向量中的元素可以使用sort()函数排序。

     

  13. 列表

     

  14. 矩阵

    创建一个以数字向量作为输入的矩阵

    可以通过使用元素的列和行索引来访问矩阵的元素。 我们考虑上面的矩阵P找到下面的具体元素。

  15. 数组

    以下示例创建一个由两个3x3矩阵组成的数组,每个矩阵具有3行和3列。

    我们可以使用dimnames参数给数组中的行,列和矩阵命名。

    访问数组元素

    操作数组元素:由于数组由多维构成矩阵,所以对数组元素的操作通过访问矩阵的元素来执行。

    跨数组元素的计算:我们可以使用apply()函数在数组中的元素上进行计算。

    以下是所使用的参数的说明 -

    • x是一个数组。
    • margin是所使用的数据集的名称。
    • fun是要应用于数组元素的函数。

    我们使用下面的apply()函数计算所有矩阵中数组行中元素的总和。

     

  16. 因子

    因子是用于对数据进行分类并将其存储为级别的数据对象。 它们可以存储字符串和整数。 它们在具有有限数量的唯一值的列中很有用。 像“男性”,“女性”和True,False等。它们在统计建模的数据分析中很有用。 使用factor()函数通过将向量作为输入创建因子。

     

  17. 数据框

    每一列包含一个变量的值。通过使用str()函数可以看到数据帧的结构。可以通过应用summary()函数获取数据的统计摘要和性质。

    使用列名称从数据框中提取特定列。

    先提取前两行,然后提取所有列

    用第2和第4列提取第3和第5行

    添加列:只需使用新的列名称添加列向量。

    添加行:要将更多行永久添加到现有数据帧,我们需要引入与现有数据帧相同结构的新行,并使用rbind()函数。