R语言 教程

R语言 概述

R语言是用于统计分析,图形表示和报告的编程语言和软件环境。 R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建,目前由R语言开发核心团队开发。

R语言的核心是解释计算机语言,其允许分支和循环以及使用函数的模块化编程。 R语言允许与以C,C ++,.Net,Python或FORTRAN语言编写的过程集成以提高效率。

R语言在GNU通用公共许可证下免费提供,并为各种操作系统(如Linux,Windows和Mac)提供预编译的二进制版本。

R是一个在GNU风格的副本左侧的自由软件,GNU项目的官方部分叫做GNU S.

R的演变

R语言最初是由新西兰奥克兰奥克兰大学统计系的Ross Ihaka和Robert Gentleman写的。 R语言于1993年首次亮相。

  • 一大群人通过发送代码和错误报告对R做出了贡献。
  • 自1997年年中以来,已经有一个核心组(“R核心团队”)可以修改R源代码归档。

R的特点

如前所述,R语言是用于统计分析,图形表示和报告的编程语言和软件环境。 以下是R语言的重要特点:

  • R语言是一种开发良好,简单有效的编程语言,包括条件,循环,用户定义的递归函数以及输入和输出设施。
  • R语言具有有效的数据处理和存储设施,
  • R语言提供了一套用于数组,列表,向量和矩阵计算的运算符。
  • R语言为数据分析提供了大型,一致和集成的工具集合。
  • R语言提供直接在计算机上或在纸张上打印的图形设施用于数据分析和显示。

作为结论,R语言是世界上最广泛使用的统计编程语言。 它是数据科学家的第一选择,并由一个充满活力和有才华的贡献者社区支持。 R语言在大学教授并部署在关键业务应用程序中。 本教程将教您R编程与适当的例子在简单和容易的步骤。

R语言 环境设置

本地环境设置

Windows安装

您可以从R-3.2.2 for Windows(32/64位)下载R的Windows安装程序版本,并将其保存在本地目录中。推荐使用清华镜像:https://mirrors.tuna.tsinghua.edu.cn/CRAN/

因为它是一个名为“R-version-win.exe”的Windows安装程序(.exe)。 您只需双击并运行安装程序接受默认设置即可。 如果您的Windows是32位版本,它将安装32位版本。 但是如果你的窗口是64位,那么它安装32位和64位版本。

安装后,您可以找到该图标,以在Windows程序文件下的目录结构“R \ R3.2.2 \ bin \ i386 \ Rgui.exe”中运行程序。 单击此图标会打开R-GUI,它是R控制台来执行R编程。

Linux安装

R语言适用于多版本的Linux系统。

各版本Linux的各有不同。具体的安装步骤在上述资源中有对应的教程。但是,如果你是在赶时间,那么你可以用yum命令,如下所示的安装指令
安装R

$ yum install R

以上命令将安装R编程的核心功能与标准包,额外的包需要另外安装,而后你可以按如下提示启动R。

$ R

R version 3.2.0 (2015-04-16) -- "Full of  Ingredients"          
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)
        
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
            
R is a collaborative project with many  contributors.                    
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
       
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

>  

现在,您可以在R语言提示符下使用install命令安装所需的软件包。 例如,以下命令将安装为3D图表所需的plotrix软件包。

> install.packages("plotrix")

R语言 基本语法

我们将开始学习R语言编程,首先编写一个“你好,世界! 的程序。 根据需要,您可以在R语言命令提示符处编程,也可以使用R语言脚本文件编写程序。 让我们逐个体验不同之处。

命令提示符

如果你已经配置好R语言环境,那么你只需要按一下的命令便可轻易开启命令提示符

$ R

这将启动R语言解释器,你会得到一个提示 > 在那里你可以开始输入你的程序,具体如下。

> myString <- "Hello, World!"
> print ( myString)
[1] "Hello, World!"

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

脚本文件

通常,您将通过在脚本文件中编写程序来执行编程,然后在命令提示符下使用R解释器(称为Rscript)来执行这些脚本。 所以让我们开始在一个命名为test.R的文本文件中编写下面的代码

# My first program in R Programming
myString <- "Hello, World!"

print ( myString)

将上述代码保存在test.R文件中,并在Linux命令提示符下执行,如下所示。 即使您使用的是Windows或其他系统,语法也将保持不变。

$ Rscript test.R 

当我们运行上面的程序,它产生以下结果。

[1] "Hello, World!"

注释

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

# My first program in R Programming

R语言不支持多行注释,但你可以使用一个小技巧,如下

if(FALSE) {
   "This is a demo for multi-line comments and it should be put inside either a single
      OR double quote"
}

myString <- "Hello, World!"
print ( myString)

虽然上面的注释将由R解释器执行,但它们不会干扰您的实际程序。 但是你必须为内容加上单引号或双引号。

R语言 数据类型

通常,在使用任何编程语言进行编程时,您需要使用各种变量来存储各种信息。 变量只是保留值的存储位置。 这意味着,当你创建一个变量,你必须在内存中保留一些空间来存储它们。

您可能想存储各种数据类型的信息,如字符,宽字符,整数,浮点,双浮点,布尔等。基于变量的数据类型,操作系统分配内存并决定什么可以存储在保留内存中。

与其他编程语言(如C中的C和java)相反,变量不会声明为某种数据类型。 变量分配有R对象,R对象的数据类型变为变量的数据类型。尽管有很多类型的R对象,但经常使用的是:

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

这些对象中最简单的是向量对象,并且这些原子向量有六种数据类型,也称为六类向量。 其他R对象建立在原子向量之上。

数据类型校验
Logical(逻辑型)TRUE, FALSEv <- TRUE
print(class(v))
它产生以下结果
[1] "logical"
Numeric(数字)12.3,5,999v <- 23.5
print(class(v))
它产生以下结果
[1] "numeric"
Integer(整型)2L,34L,0Lv <- 2L
print(class(v))
它产生以下结果
[1] "integer"
Complex(复合型)3 + 2iv <- 2+5i
print(class(v))
它产生以下结果
[1] "complex"
Character(字符)'a' , '"good", "TRUE", '23.4'v <- "TRUE"
print(class(v))
它产生以下结果
[1] "character"
Raw(原型)"Hello" 被存储为 48 65 6c 6c 6fv <- charToRaw("Hello") print(class(v))
它产生以下结果
[1] "raw"

在R编程中,非常基本的数据类型是称为向量的R对象,其保存如上所示的不同类的元素。 请注意,在R中,类的数量不仅限于上述六种类型。 例如,我们可以使用许多原子向量并创建一个数组,其类将成为数组。

Vectors 向量

当你想用多个元素创建向量时,你应该使用c()函数,这意味着将元素组合成一个向量。

# Create a vector.
apple <- c('red','green',"yellow")
print(apple)

# Get the class of the vector.
print(class(apple))

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

[1] "red"    "green"  "yellow"
[1] "character"

Lists 列表

列表是一个R对象,它可以在其中包含许多不同类型的元素,如向量,函数甚至其中的另一个列表。

# Create a list.
list1 <- list(c(2,5,3),21.3,sin)

# Print the list.
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"

Arrays 数组

虽然矩阵被限制为二维,但阵列可以具有任何数量的维度。 数组函数使用一个dim属性创建所需的维数。 在下面的例子中,我们创建了一个包含两个元素的数组,每个元素为3x3个矩阵。

# 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 因子

因子是使用向量创建的r对象。 它将向量与向量中元素的不同值一起存储为标签。 标签总是字符,不管它在输入向量中是数字还是字符或布尔等。 它们在统计建模中非常有用。
使用factor()函数创建因子。nlevels函数给出级别计数。

# 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 Frames 数据帧

数据帧是表格数据对象。 与数据帧中的矩阵不同,每列可以包含不同的数据模式。 第一列可以是数字,而第二列可以是字符,第三列可以是逻辑的。 它是等长度的向量的列表。
使用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语言 变量

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

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

变量赋值

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

# Assignment using equal operator.
var.1 = c(0,1,2,3)           

# Assignment using leftward operator.
var.2 <- c("learn","R")   

# Assignment using rightward operator.   
c(TRUE,1) -> var.3           

print(var.1)
cat ("var.1 is ", var.1 ,"
")
cat ("var.2 is ", var.2 ,"
")
cat ("var.3 is ", var.3 ,"
")

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

[1] 0 1 2 3
var.1 is  0 1 2 3 
var.2 is  learn R 
var.3 is  1 1 

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

变量的数据类型

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

var_x <- "Hello"
cat("The class of var_x is ",class(var_x),"
")

var_x <- 34.5
cat("  Now the class of var_x is ",class(var_x),"
")

var_x <- 27L
cat("   Next the class of var_x becomes ",class(var_x),"
")

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

The class of var_x is  character 
   Now the class of var_x is  numeric 
      Next the class of var_x becomes  integer

查找变量

要知道工作空间中当前可用的所有变量,我们使用ls()函数。 ls()函数也可以使用模式来匹配变量名。

print(ls())

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

[1] "my var"     "my_new_var" "my_var"     "var.1"      
[5] "var.2"      "var.3"      "var.name"   "var_name2."
[9] "var_x"      "varname" 

注意 - 它是一个示例输出,取决于在您的环境中声明的变量。

ls()函数可以使用模式来匹配变量名。

# List the variables starting with the pattern "var".
print(ls(pattern = "var"))   

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

[1] "my var"     "my_new_var" "my_var"     "var.1"      
[5] "var.2"      "var.3"      "var.name"   "var_name2."
[9] "var_x"      "varname"    

以点(.)开头的变量被隐藏,它们可以使用ls()函数的“all.names = TRUE”参数列出。

print(ls(all.name = TRUE))

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

[1] ".cars"        ".Random.seed" ".var_name"    ".varname"     ".varname2"   
[6] "my var"       "my_new_var"   "my_var"       "var.1"        "var.2"        
[11]"var.3"        "var.name"     "var_name2."   "var_x"  

删除变量

可以使用rm()函数删除变量。 下面我们删除变量var.3。 打印时,抛出变量错误的值。

rm(var.3)
print(var.3)

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

[1] "var.3"
Error in print(var.3) : object 'var.3' not found

所有的变量可以通过使用rm()和ls()函数一起删除。

rm(list = ls())
print(ls())

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

character(0)

R语言 运算符

运算符是一个符号,通知编译器执行特定的数学或逻辑操作。 R语言具有丰富的内置运算符,并提供以下类型的运算符。

运算符的类型

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
隐藏内容需要支付:¥1

未经允许不得转载!R语言 教程

本文地址:https://ai.52learn.online/1321

如遇到无法显示的问题,请先尝试刷新页面

客服联系邮箱:ai52learn@foxmail.com