转:R语言入门和熟悉

R语言统计检验及科研绘图是科研搬砖人日常,但其相对复杂的代码语法及文件操作对语言菜鸟来说压力山大。本文简要介绍R语言相关知识及常用操作。

图片

一、R+RStudio+Rtools简介及安装

R语言(http://cran.r-project.org)是一种广泛用于统计分析、数据可视化和机器学习等领域的编程语言,可以在多种操作系统上运行,包括Windows、MacOS、Linux等,方便不同平台的用户使用。R语言是开源软件,用户可以自由获取、使用和修改其源代码,这使得它在全球范围内拥有庞大的开发者社区,不断地为其贡献新的功能和改进。R语言内置了丰富的统计分析函数,涵盖了描述性统计、假设检验、回归分析、聚类分析、因子分析等众多领域,能够满足各种复杂的统计分析需求。R语言支持多种类型的图形绘制,如散点图、折线图、柱状图、箱线图及饼图等,还可以通过ggplot2等扩展包创建高度定制化和精美的可视化图形。全球开发者开发了大量的扩展包可供使用,这些扩展包覆盖了从数据处理、机器学习到生物信息学等各个领域,用户可以根据自己的需求轻松安装和使用这些扩展包来扩展R语言的功能。    

图片

RStudio(https://posit.co/products/open-source/rstudio/)是一款专门为R语言设计的集成开发环境(IDE),它极大地提升了使用R语言进行数据科学和统计分析工作的效率和便捷性。RStudio提供了一个直观且易于使用的界面,将代码编辑、数据查看、绘图展示、控制台输出等功能集成在一个窗口中,用户可以方便地在各个功能区域之间切换,进行代码编写、调试和数据分析等操作。RStudio具备强大的代码编辑功能,支持语法高亮显示,能够清晰区分不同类型的代码元素,如关键字、变量、函数等,使代码更易阅读和编写。同时,具备代码自动补全功能,当用户输入部分代码时,RStudio会自动提示可能的函数、变量或参数,提高编码效率。还支持代码调试功能,用户可以设置断点,逐行执行代码,查看变量的值和程序的执行流程,方便排查代码中的错误。RStudio支持以项目为单位组织工作。用户可以为每个项目创建独立的工作空间,包含该项目的代码文件、数据文件、配置文件等。切换项目时,RStudio会自动加载该项目的工作环境,包括之前打开的文件、设置的变量等,方便用户在不同项目之间快速切换和管理。在RStudio中可以直接查看R语言生成的图形和可视化结果。绘图窗口会实时显示代码运行后生成的图形,并且支持对图形进行放大、缩小、保存等操作,方便用户对可视化结果进行分析和展示。RStudio支持多种输出格式,可以将代码和分析结果以多种格式输出,如HTML、PDF、Word等。通过RMarkdown功能,用户可以将代码、文本说明和可视化结果整合在一个文档中,然后一键生成各种格式的报告,方便与他人分享分析结果。    

图片

    

RStudio的界面主要由代码编辑窗口、控制台窗口、环境与历史记录窗口和文件、绘图、包与帮助窗口四个窗口组成。代码编辑窗口通常位于左上角,用于编写和编辑R代码。用户可以创建新的R脚本文件(.R)或RMarkdown文件(.Rmd),并在该窗口中输入和修改代码。控制台窗口一般位于左下角,是R代码的执行区域。用户可以在控制台中直接输入R命令并立即执行,查看代码的运行结果和错误信息。同时,控制台还会显示代码执行过程中的各种提示和警告信息。环境与历史记录窗口位于右上角,包含两个子窗口。“环境”子窗口显示当前工作空间中的所有变量和对象,用户可以查看变量的名称、类型、值等信息。“历史记录”子窗口记录了用户在控制台中输入过的所有命令,方便用户回顾和重复使用之前的命令。文件、绘图、包与帮助窗口位于右下角,包含多个子窗口。“文件”子窗口用于浏览和管理文件系统中的文件和文件夹。“绘图”子窗口显示R代码生成的图形和可视化结果。“包”子窗口用于管理安装的R扩展包,用户可以查看已安装的包、安装新包、更新或卸载现有包。“帮助”子窗口提供R语言和各个扩展包的文档和帮助信息,用户可以通过搜索功能查找相关的函数和用法说明。    

图片

启动Rstudio,设置国内镜像站点提高下载R软件包下载速度。在RStudio的“Tools”菜单选择“Global Options”按钮,在“Options”界面选择“Packages”选项卡。选择“Change…”按钮弹出“Choose Primary Repository”页面,在“CRAN mirror”选项卡下拉菜单中,选择一个中国镜像站点即可。设置完成后,RStudio将使用选定的镜像站点来下载和更新软件包。    

图片

    

图片

    

图片

在RStudio程序设置IDE界面主题风格,选择“Tools”>“Global Options”> “Appearance”>“选择字体、字号及编辑主题Editor theme”>底部“Apply”。    

图片

R+RStudio+Rtools简介及安装方法请参考Windows系统安装R+RStudio+Rtools,详情请访问ComprehensiveRArchiveNetwork官网(http://cran.r-project.org)。

二、R包(Package)

R包是R函数、数据、预编译代码以一种定义完善的格式组成的集合,存储包的目录称为库(library)。R自带一系列默认的包,其他包需要额外下载安装,首次安装新R包可使用命令install.packages()完成【eg:install.packages("BiocManager")】。安装成功后,使用library()命令载入包【eg:library(BiocManager)】,最后使用help()函数查看R包帮助文档。    

图片

或选择RStudio菜单栏“Tools”>“Install Packages…”,选择获取渠道(Install from:)、R包(Packages)及库路径(Install to Library:),勾选“Install dependencies”,选择“Install”按钮执行安装即可。    

图片

或由第三方网站下载所需压缩格式R包,选择“Install from:”>“Package Archive File(.zip; .tar.gz)”,选择R包载入目录进行安装,适用于安装版本不匹配的R包或小众功能包。

图片

******常见错误解析******

① 命令拼写大小写错误。例如help()正确,而Help()和HELP()错误;

② 引号使用错误。install.packages("ggplot2")是正确的,必须要有英文引号;而library(ggplot2)也是正确的,不需要有英文引号;

③ 调用函数缺失括号。即使函数无需参数仍然要加上括号;

④ Windows系统目录路径名称斜杠错误。R语言中的反斜杠“\”代表转义字符,正确写法是setwd("D:/rtools44")或setwd("D:\\rtools44");    

⑤ 中英文符号混用问题。R语言只能使用英文符号,中文符号必然导致报错,例如中文逗号,英文逗号,中文引号“”英文引号""。

三、数据类型

(1) 工作目录

    # 清除内存中的所有变量rm(list=ls())# 显示当前工作目录getwd()# 设置工作目录,注意反斜杠setwd()# Windows RStudio使用快捷键,R命令由函数和赋值构成# 同时按下Alt键和“-”键,插入赋值符号"<-"# R语言基础赋值符号有“<-”、“->”和“=”,“<-”表示将箭头右侧内容储存在左侧符号中,“->”表示将箭头左侧内容储存在右侧符号中,“=”表示将等号右侧内容储存在左侧符号中。

    图片

    (2) 数据类型

    R语言有5种基础数据类型(class),包括3个数值型、1个字符型和1个逻辑型,使用class()函数查询数据类型。其中,数字(numeric)是实数向量,整数(integer)是整数向量,复数(complex)是复数,字符(character)需要使用英文引号括起,逻辑(logical)是逻辑向量,正确TRUE,错误FALSE,缺失NA。R语言行列对应术语分别为观测(Observation)和变量(Variable)。    

    (3) 数据输入和输出

    R语言用于存储数据的对象类型包括标量、向量、矩阵、数组、数据框和列表。

    ① 标量是指只含1个元素(常量)的向量,eg:a <- 3、b <- TRUE;

    ② 向量是指用于存储数值型、字符型或逻辑型数据的一维数组,使用函数c()来创建向量;

      # 数值型向量c <- c(3, 6, 55, 19, -7)# 字符型向量d <- c("three", "six", "fifty-five", "nineteen", "minus seven")# 逻辑型向量e <- c(TRUE, TRUE, TRUE, TRUE, FALSE)# 中括号指定向量元素,访问d向量的1、5号元素"three", "minus seven"d[c(1, 5)]

      图片

      ③ 矩阵(matrix)是指二维数组,所有元素模式相同。通过函数matrix()创建矩阵,1个矩阵中只能包含1种数据类型。    

        # matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)# nrow指定行数;ncol指定列数;dimnames指定可选的以字符型向量表示的行列名称;byrow指定矩阵按行填充,默认按列填充;# 井号“#”代表注释符号,5个及以上连续“#”可得到1个代码目录,选择标题左方行号小三角可折叠隐藏该段代码# eg:创建1个5x5的矩阵,按列填充数字1-25y <- matrix(1:25, nrow = 5, ncol = 5)y

        图片

        图片

        此外,通过下标和中括号来选择矩阵中的行、列或元素,X[i, ]是指矩阵X第i行,X[ , j]是指矩阵X第j列,X[i, j]是指矩阵X,第i行第j列所在元素。选择多行或多列时,下标i和j可改数值型向量。    

        ④ 数据框(data frame)是可以由命令data.frame()创建,是最常见的松散数据结构。数据框可以由不同类型数据列(数字、因子和字符等)组成,但每一列数据的模式必须一致。

          # data.frame(frame_ABC, row.names = NULL, check.rows = FALSE, check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = FALSE)# row.names = NULL或整数或字符串,或者指定某列用作行名,或者单个字符或整数型向量用作数据框行名# check.rows = FALSE代表无需检查行长度和名称一致性# fix.empty.names = TRUE代表自动填充空白列名# stringsAsFactors = FALSE用于数据框含有字符类型数据使,防止R将字符型(character)错误识别为因子(factor)# 创建数据框colleaguename <- c("小张", "老王", "二竺", "双喜", "浪浪")birth <- c(1971, 1965, 1974, 1993, 1983)gender <- c("男", "男", "女", "女", "女")college <- c("中科大", "华南理工", "天大", "中大", "国防科大")hobby <- c("唱歌", "美食", "街舞", "IT", "绘画")colleague <- data.frame(name, birth, gender, college, hobby)colleague

          图片

            # 数据框列命名student = data.frame('名字' = name, '出生年份' = birth, '性别' = gender, '毕业高校' = college, '爱好' =hobby)# 查看数据框studentstudent# 使用rbind()按行合并两个及以上的向量、矩阵或数据框print(rbind(name, birth, gender, college, hobby))# 使用cbind()按列合并两个及以上的向量、矩阵或数据框print(cbind(name, birth, gender, college, hobby)) 

            图片

            使用head()函数按行显示数据框首部几行数据(默认6行),使用tail()函数按行显示数据框尾部几行数据(默认6行)。

            ⑤ 数组(array)与矩阵类似,但维度允许>2且仅能包含1种类型数据,可以使用array()函数创建。

              # array(data = NA, dim = length(data), dimnames = NULL)# data系创建数组的元素;dim是数组维数,即数值型向量;dimnames是各个维度名称标签列表。

              四、数据导入

              最简单的图形化操作数据输入方法是选择RStudio右侧上方“Environment”>“Import Dataset”>“From Excel…”,在安装了相关包的前提下直接选择对应选择及文件导入即可。    

              图片

              (1) 键盘手动输入

              ① 文本编辑器

              应用edit()函数调用允许手动输入数据的文本编辑器。首先使用data.frame()函数创建1个空数据框demo,然后通过edit()函数调用文本编辑器编辑数据框demo,输入数据,保存至demo。

                # 新建demodemo <- data.frame(age = numeric(0), gender = character(0), weight = numeric(0))# 启用编辑器修改demo,系demo <- edit(demo)语句的等价简约写法# 弹出文本编辑器后手动输入数据,还能改变量名称和变量类型,例如数值型numeric和字符型character。或选择未使用列标题来添加新变量,输入完成后选择“文件”>“关闭”关闭文本编辑器即可。fix(demo)    

                图片

                ② 代码嵌入数据

                  # 直接在R代码中嵌入数据集demo3 <- "age gender weight25 m 16630 f 11518 f 120"# 创建字符型变量且存储原始数据# read.table()函数处理字符串且返回数据框demo3 <- read.table(header = T, text = demo3)demo3    

                  图片

                  (2) 带分隔符的文本文件

                  文本文件包括以.txt、.csv和.tsv为后缀的文件,csv文件以逗号分隔,tsv文件以tab分割。使用read.table()函数导入带分隔符的文本文件数据。此函数读入表格格式文件且保存为数据框。

                    ## 导入table表格数据# file指定导入文件,注意指定文件格式# header = FALSE指定首行作列名,默认FALSE# sep = ""指定数据分隔符,默认空格# quote = "\"'"指定引用字符设置,默认\# dec = "."指定小数点# numerals = c("allow.loss", "warn.loss", "no.loss")指定丢失精度时的转换方法# row.names指定行名所在列# col.names指定列名所在行    # na.strings = "NA"指定缺失值# nrows = -1指定最大可读取行数,非正数无效# skip = 0指定读取时忽略的行数# check.names = TRUE指定检查变量名,默认TRUE# blank.lines.skip = TRUE指定忽略空行,默认TRUE# flush = FALSE指定读完指定列后转到下一行,默认TRUE# stringsAsFactors = FALSE指定字符向量转化为因子,默认FALSE# fileEncoding = ""指定编码方式# 若无file,则使用text指定导入数据# skipNul = FALSE指定忽略空白值,默认TRUEread.table(file, header = FALSE, sep ="", quote ="\"'", dec =".", numerals = c("allow.loss", "warn.loss", "no.loss"), row.names, col.names, as.is =!stringsAsFactors, tryLogical =TRUE, na.strings ="NA", colClasses =NA, nrows =-1, skip =0, check.names =TRUE, fill =!blank.lines.skip, strip.white =FALSE, blank.lines.skip =TRUE, comment.char ="#", allowEscapes =FALSE, flush =FALSE, stringsAsFactors =FALSE, fileEncoding ="", encoding ="unknown", text, skipNul =FALSE)## 导入CSV表格文件,替换成sep = ";"可以改变分隔符类型read.csv(file, header = TRUE, sep = ",", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...)## 读取以制表符分隔的文本文件,替换成dec = ","可以改变分隔符类型read.delim(file, header = TRUE, sep = "\t", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...)

                    由上述可见read.table()函数具有大量参数,以下介绍少数重要参数。

                    ① file    

                    file指定导入数据来源,直接使用read.table()函数读取文件需要指定其绝对路径,或使用file.choose()函数指定,运行时打开文件选择窗口,在窗口中选择目标文件。一般情况下,在指定工作目录时可直接指定文件名进行文件读取。

                      # 应用绝对路径直接读取文件metadata <- read.table(file = "C:/Users/liulanzhou/Desktop/metadata.txt", header = T, row.names = 1)metadata

                      图片

                          

                        # 设置工作路径,即目标读取文件所在路径setwd("C:/Users/liulanzhou/Desktop") getwd()# 应用工作路径直接指定文件读取metadata1 <- read.table("metadata.txt", header = T, row.names = 1)metadata1

                        图片

                        特别注意,TXT文本文件编码格式和R导入指定编码格式不一致会导致报错,使用记事本编辑器查看和修改文件编码格式,或应用fileEncoding参数指定导入文件编码格式。    

                        图片

                        图片

                        ② header

                        指定是否将首行作为列名称行,read.table()和read.csv()分别默认F与T,也允许自定义。空缺则无行名称,系统自动填补,eg:T/F。

                          metadata <- read.table(file = "metadata.txt")View(metadata)

                          图片

                          图片

                            metadata9 <- read.csv(file = "metadata.txt",sep = "")View(metadata9)  

                            图片

                            图片

                            ③ row.names

                            行名称向量直接指定相应行名,也可以是1个数值,此数值指定表中相应列数为行名。当row.names未指定或指定为NULL时,系统自动编列名为数值。

                              metadata3 <- read.table("metadata.txt", header = T, row.names = 1)View(metadata3)   

                              图片

                              图片

                                metadata6 <- read.table("metadata.txt", header = T)View(metadata6)    

                                图片

                                图片

                                ④ sep

                                sep指定分隔符号,包括1个或多个空格、制表符(\t)、换行符或回车符,read.table()默认空格。由于CSV文件是逗号分隔的文本文件,因此应用read.table()读取CSV文件时要指定为sep = ",",否则无法正常读取。    

                                (3) EXCEL数据

                                建议先另存.xlsx文件为.csv文件,再按上述方法导入R。或可以使用R包xlsx的read.xlsx()函数导入。

                                (4) 其他数据

                                其他的XML文件、网页数据、SPSS数据、SAS数据和Stata数据等特定格式数据,请自行查阅学习。

                                评论
                                添加红包

                                请填写红包祝福语或标题

                                红包个数最小为10个

                                红包金额最低5元

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

                                抵扣说明:

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

                                余额充值