从零开始进行单倍型分析之R语言入门篇(上)

从零开始进行单倍型分析

(一)基础知识篇
(二)分析工具篇
(三)R语言基础篇之入门(上)(只讲需要的)
(四)R语言基础篇之进阶篇(下)(只讲需要的)
(五)geneHapR之数据准备篇(上)(只讲需要的)
(六)数据准备及软件实操篇
(七)结果诠释篇

本文主要介绍了 R 语言的基本信息,包括其简介、风格、基础变量等内容。R 语言是用于统计计算和绘图的编程语言,具有免费开源、包丰富、数据处理和可视化能力强等特点。其语法简洁灵活,区分大小写,注释包括单行注释和多行注释。基础变量涉及变量的命名与赋值规则,数据类型有数值型、字符型、逻辑型、复数型和原始型,运算符包括算术、逻辑和比较运算符。基本变量类型有向量和数据框,向量可通过多种方式创建和操作,数据框可通过特定函数创建、进行元素访问、添加删除列、合并等操作,并有相关属性和函数。此外,文章还提及了其他变量类型,但未详细介绍,推荐了菜鸟教程网站供读者进一步学习。

一、R语言简介

  • 基本概念

    • R 语言是一种用于统计计算和绘图的编程语言。它提供了丰富的统计和数据分析方法,以及强大的数据可视化功能。
    • 在 R 中,数据是操作的核心。数据可以存储在多种数据结构中,例如向量、数据框等。
  • R 语言的特点

    • 免费开源:任何人都可以免费使用和修改 R 语言的源代码。
    • 丰富的包(package):有大量的扩展包可用于各种领域,如数据分析、机器学习、生物信息学等。
    • 强大的数据处理能力:能够轻松处理和分析大型数据集。
    • 优秀的可视化功能:可以创建高质量的统计图表和数据可视化图形。

二、R 语言风格

语言风格

  • R 语言的语法简洁且灵活。它使用函数来执行各种操作,函数的调用格式通常是function_name(arguments)
  • R 是区分大小写的,这意味着myVariablemyvariable是不同的标识符。
  • 代码通常以脚本的形式编写,可以在 R 控制台中逐行执行,也可以一次性运行整个脚本。

R语言里的注释

1. 单行注释

使用#符号进行单行注释。从#开始直到该行结束的所有内容都会被 R 解释器忽略。例如:

# 这是一个计算平均值的简单示例
x <- c(1, 2, 3, 4, 5)
mean_value <- mean(x)

2. 多行注释

R 语言本身没有专门的多行注释符号,但可以通过连续使用单行注释来实现多行注释的效果。例如:

# 以下是一段关于数据处理的代码
# 首先读取数据
# data <- read.csv("data.csv")
# 然后进行数据清洗等操作

在实际编程中,良好的注释习惯可以提高代码的可读性,方便自己和其他开发者理解代码的功能、逻辑和算法流程等相关信息。

三、R语言基础变量

变量的命名与赋值

  • 变量命名:变量名可以包含字母、数字、点(.)和下划线(_),但不能以数字开头。例如,my_variabledata_1等都是有效的变量名。
  • 变量命名的注意事项
    • 1)不能以数字开头:例如,9var是不合法的变量名,而var9是合法的;
    • 2)不能是保留字:R 语言中有一些保留字,这些保留字具有特定的语法含义,不能用作变量名,例如,if、else、for、while、function等;
    • 3)大小写敏感:在 R 中,变量名是区分大小写的,例如,myVariable和myvariable被视为两个不同的变量;
    • 4)语义清晰,见名知义:为了提高代码的可读性,变量名应该尽量具有描述性,能够反映变量所代表的含义或存储的数据内容,例如,使用student_names来表示存储学生姓名的变量,而不是简单地使用x或y。
  • 变量的赋值:使用<-=进行赋值操作。例如:
    • x <- 5:将数值 5 赋给变量x
    • y = "hello":将字符串 “hello” 赋给变量y

R语言基本数据类型

  1. 数值型(Numeric)

    • 整数(Integer)

      • 表示没有小数部分的数字。在 R 中,可以通过在数字后面加上L来明确表示一个整数,例如1L5L等。整数可以进行常规的算术运算,如加法、减法、乘法和除法。
    • 浮点数(Floating - point)

      • 用于表示带有小数部分的数字,例如3.14-2.5等。浮点数在内存中的存储方式遵循 IEEE 754 标准,它能够表示的数值范围和精度是有限的。在进行高精度计算时可能会出现舍入误差。
  2. 字符型(Character)

    • 用于存储文本数据,在 R 中字符型数据需要用单引号'或双引号"括起来,例如'hello'"world"。可以对字符型数据进行操作,如拼接(使用paste()函数)、提取子串(使用substr()函数)等。
  3. 逻辑型(Logical)

    • 逻辑型数据只有两个取值:TRUE(真)和FALSE(假),也可以用TF表示(不建议,因为TF可以被重新赋值)。逻辑型数据主要用于条件判断和逻辑运算,例如在if语句、while语句中作为判断条件,或者进行与(&)、或(|)、非(!)等逻辑运算。
  4. 复数型(Complex)

    • 用于表示复数,形式为a + bi,其中a是实部,b是虚部,在 R 中可以写成3 + 4i这样的形式。复数可以进行加、减、乘、除等运算,R 提供了相应的函数来处理复数的实部、虚部、模和幅角等。
  5. 原始型(Raw)

    • 原始型数据是以字节为单位存储的数据,可以用来存储和操作二进制数据。例如,可以使用原始型数据来读取和写入二进制文件。

R语言中的运算符

  1. 算术运算符

    • 加法(+)
      • 用于两个数值(整数或浮点数)相加,例如:3 + 5的结果为8
      • 也可以用于向量、矩阵等数据结构的对应元素相加,前提是它们的维度相符。
    • 减法(-)
      • 实现两个数值的相减操作,如7 - 4等于3
      • 同样适用于数据结构元素间的减法运算。
    • 乘法(*)
      • 对两个数值进行乘法运算,例如2 * 6得到12
      • 对于向量和矩阵,按照线性代数规则进行乘法运算。
    • 除法(/)
      • 执行数值间的除法,如8 / 2的结果是4
    • 取模(%%)
      • 返回除法运算的余数,例如10 %% 3的结果为1
    • 整除(%/%)
      • 进行整数除法,只取商的整数部分,比如10 %/% 3等于3
  2. 逻辑运算符

    • 与(&、&&)
      • &对两个逻辑向量的对应元素进行与运算,例如:c(TRUE, FALSE) & c(TRUE, TRUE)得到c(TRUE, FALSE)
      • &&通常用于单个逻辑值的与运算,只检查第一个元素,如TRUE && FALSEFALSE
    • 或(|、||)
      • |用于逻辑向量对应元素的或运算,如c(TRUE, FALSE) | c(FALSE, TRUE)得到c(TRUE, TRUE)
      • ||主要用于单个逻辑值的或运算,只检查第一个元素,例如TRUE || FALSETRUE
    • 非(!)
      • 对单个逻辑值或逻辑向量的每个元素取反,如!TRUEFALSE!(c(TRUE, FALSE))得到c(FALSE, TRUE)
  3. 比较运算符

    • 等于(==)
      • 比较两个对象是否相等,例如3 == 3TRUE"a" == "b"FALSE
      • 对于数据结构,比较的是对应元素是否相等。
    • 不等于(!=)
      • 检查两个对象是否不相等,如4!= 5TRUE
    • 大于(>)
      • 当左边对象大于右边对象时返回TRUE,例如5 > 3TRUE
    • 小于(<)
      • 左边对象小于右边对象时结果为TRUE,如2 < 4TRUE
    • 大于等于(>=)
      • 左边对象大于或等于右边对象时为TRUE,例如3 >= 3TRUE
    • 小于等于(<=)
      • 左边对象小于或等于右边对象时返回TRUE,如4 <= 5TRUE

R语言里基本变量类型

1 向量(Vector)
  • ** 向量的定义**

向量是 R 语言中最基本的数据结构之一,它是由一组相同数据类型(如数值型、字符型、逻辑型等)的元素组成的有序集合。可以将其看作是一维的数组。

  • 向量的创建

    1. 使用c()函数

      • 数值型向量:例如num_vector <- c(1, 2.5, -3, 4),可以将多个数值组合成一个数值型向量。
      • 字符型向量:char_vector <- c("apple", "banana", "cherry"),把字符元素放在c()函数中创建字符型向量。
      • 逻辑型向量:logical_vector <- c(TRUE, FALSE, TRUE),创建包含逻辑值的向量。
    2. 序列生成函数

      • :运算符:可以快速生成一个整数序列,例如1:5会生成向量c(1, 2, 3, 4, 5)
      • seq()函数:更加灵活,例如seq(0, 10, by = 2)将生成c(0, 2, 4, 6, 8, 10),其中0是起始值,10是终止值,by = 2表示步长为 2。
  • 向量的基本操作

    1. 访问向量元素

      • 通过索引访问:在 R 中,向量的索引从 1 开始。例如,对于向量vec <- c(10, 20, 30)vec[2]将返回 20。也可以使用负索引来排除某些元素,如vec[-2]将返回c(10, 30)
      • 逻辑索引:根据逻辑条件选择元素。例如,对于向量num_vector <- c(1, 2, 3, 4, 5)num_vector[num_vector > 3]将返回c(4, 5)
    2. 向量的运算

      • 算术运算:对于数值型向量,可以进行加、减、乘、除等算术运算。如果两个向量长度相同,则对应元素进行运算,例如c(1, 2, 3) + c(4, 5, 6)得到c(5, 7, 9);如果一个向量和一个标量(单个数值)进行运算,则向量的每个元素都与该标量进行运算,如c(1, 2, 3) * 2得到c(2, 4, 6)
      • 逻辑运算:对逻辑型向量进行与(&)、或(|)、非(!)等逻辑运算。
    3. 向量的合并

      • 使用c()函数:可以将多个向量合并成一个新的向量,例如new_vector <- c(vector1, vector2)
  • 向量的属性和函数

    1. 长度

      • 使用length()函数可以获取向量中元素的个数,例如length(c(1, 2, 3))的结果为 3。
    2. 类型判断

      • is.numeric()is.character()is.logical()等函数分别用于判断向量是否为数值型、字符型、逻辑型。
    3. 其他常用函数

      • sum()mean()min()max()等函数可以分别计算数值型向量的总和、平均值、最小值和最大值。
      • sort()函数可以对向量进行排序,例如sort(c(3, 1, 2))将返回c(1, 2, 3)
2 数据框(Data Frame)
  1. 数据框的定义

​ 数据框(Data Frame)是 R 语言中一种非常重要的二维数据结构,它类似于电子表格或数据库中的表。数据框的每一列可以是不同的数据类型(如数值型、字符型、逻辑型等),但每一行的元素个数必须相同。

  1. 数据框的创建
  • 使用 data.frame() 函数

基本创建方式:可以直接在data.frame()函数中指定列名和对应的值来创建数据框。例如:

    df <- data.frame(
        Name = c("Alice", "Bob", "Charlie"),
        Age = c(25, 30, 35),
        Gender = c("Female", "Male", "Male")
    )
  • 从向量创建:先定义好每一列的向量,再将这些向量组合成数据框。
    name_vec <- c("Alice", "Bob", "Charlie")
    age_vec <- c(25, 30, 35)
    gender_vec <- c("Female", "Male", "Male")
    df <- data.frame(Name = name_vec, Age = age_vec, Gender = gender_vec)
  • 读取外部文件创建

    • 从 CSV 文件创建:使用read.csv()函数可以从 CSV(逗号分隔值)文件中读取数据并创建数据框,例如df <- read.csv("data.csv")

    • 从其他文件格式(如 Excel 文件、文本文件等):需要使用相应的 R 包,如readxl包中的read_excel()函数用于读取 Excel 文件。

  1. 数据框的基本操作

    1. 访问数据框中的元素

      • 通过索引访问
        • 按行和列索引:使用[ ]运算符,逗号前表示行索引,逗号后表示列索引。例如,df[1, 2]表示访问数据框df的第一行第二列的元素;df[1:2, ]表示访问第一行和第二行的所有列;df[, 2:3]表示访问第二列和第三列的所有行。
        • 按名称索引:使用$符号通过列名来访问某一列,例如df$Age将返回数据框df中名为Age的列。
      • 使用逻辑索引:根据逻辑条件选择数据框中的行或列。例如,df[df$Age > 30, ]将返回数据框dfAge列大于 30 的所有行。
    2. 添加和删除列

      • 添加列:可以直接给数据框新增一列,例如df$NewColumn <- c(1, 2, 3),给df添加了一个名为NewColumn的新列。
      • 删除列:可以使用subset()函数或者通过赋值NULL来删除列,例如df <- subset(df, select = -NewColumn)或者df$NewColumn <- NULL
    3. 合并数据框

      • rbind()函数:用于按行合并数据框,要求合并的数据框具有相同的列数和相同的列名。例如,df_combined <- rbind(df1, df2)
      • cbind()函数:用于按列合并数据框,要求合并的数据框具有相同的行数。例如,df_combined <- cbind(df1, df2)
  2. 数据框的属性和函数

    1. 查看数据框的结构

      • str()函数:可以查看数据框的结构,包括列名、每列的数据类型以及前几个数据元素等信息。
      • dim()函数:返回数据框的行数和列数,例如dim(df)将返回一个包含行数和列数的向量。
      1. 数据框的统计汇总
      • summary()函数:对数据框的每一列进行基本的统计汇总,对于数值列会给出最小值、最大值、中位数、均值和四分位数等信息,对于字符列会给出不同取值的数量。
  3. 行名与列名

    • 查看

      • 列名查看

        • 使用colnames()函数,例如对于数据框dfcolnames(df)将返回列名组成的字符向量。
        • 也可以使用names(df),效果与colnames(df)相同。
      • 行名查看

        • 使用rownames()函数,例如rownames(df)可以查看数据框df的行名。
    • 修改

      • 列名修改

        • 使用colnames()函数,例如colnames(df) <- c("new_col1", "new_col2",...)可以将df的数据框的列名修改为指定的新列名。
        • 也可以在创建数据框时直接指定列名,如df <- data.frame(new_col1 = values1, new_col2 = values2,...)
      • 行名修改

        • 同样使用rownames()函数,例如rownames(df) <- c("row1", "row2",...)可以修改数据框df的行名。
    • 注意事项

      • 唯一性

        • 列名在一个数据框中必须是唯一的,不能有重复的列名。如果尝试设置重复的列名,可能会导致数据访问和操作出现混淆。
        • 行名也通常要求具有唯一性,尤其是在一些需要根据行名进行索引和匹配的操作中。不过,R 语言在某些情况下允许行名重复,但这可能会引起意想不到的结果。
      • 字符类型

        • 列名和行名通常是字符型向量。在修改或指定列名和行名时,要确保提供的是字符型数据。
      • 影响其他操作

        • 修改行名和列名可能会影响基于这些名称进行的其他操作,如数据提取、合并操作等。例如,如果在一个数据框和另一个数据框进行合并时,它们的列名不一致,可能需要先调整列名以确保合并操作的正确性。
3. 其他变量类型

R语言里的其他变量类型还包括:列表、矩阵、数组等;由于篇幅限制,以及其他变量类型其在单倍型分析中的必要性有限,故本文不过多介绍。
如有需要请自行去问度娘,然各路大神做的教程参差不齐;故另推荐菜鸟教程,一个适合新手入门的网站。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syhz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值