R:计算相对丰度最简单的R代码

发布时间 2023-12-26 09:45:45作者: 王哲MGG_AI
rm (list = ls ()) #清除所有变量
setwd("C:\\Users\\Administrator\\Desktop\\新建文件夹\\PCoA") #设置工作目录

# 加载必要的库
library(dplyr)

# 读取数据,假设您的文件名是 data.txt
# 请根据您的文件实际路径调整这里的文件名
data <- read.table("otu_table.txt", header = TRUE, sep = "\t", quote = "")

# 计算相对丰度
# 跳过第一列(物种名称),只对数值列进行计算
relative_abundance <- data %>%
  mutate(across(-clade_name, ~ round(.x / sum(.x), 10)))

# 输出结果到新的TXT文件
write.table(relative_abundance, "relative_abundance.txt", sep = "\t", row.names = FALSE, quote = FALSE)

以下是详细解释:

  1. rm(list = ls())

    • 这行代码用于清除R环境中的所有变量。ls()函数列出当前环境中的所有变量,而rm()函数则删除这些变量。这通常在开始新的分析前做,以确保工作环境是干净的。
  2. setwd("C:\\Users\\Administrator\\Desktop\\新建文件夹\\PCoA")

    • 这行代码设置了R的工作目录。setwd()函数用于改变当前的工作目录,这里将工作目录设为了一个特定的路径。这意味着R会在这个目录下查找文件,并将所有输出文件保存到这个位置。
  3. library(dplyr)

    • 这行代码加载了dplyr包。dplyr是一个用于数据操作的R包,提供了许多有用的函数来处理数据框(data frames)。
  4. data <- read.table("otu_table.txt", header = TRUE, sep = "\t", quote = "")

    • 这行代码读取名为otu_table.txt的文件,将其作为一个数据框存储在变量data中。
    • header = TRUE表示文件的第一行包含列名。
    • sep = "\t"指定列之间的分隔符是制表符(tab),这是TXT文件中常见的格式。
    • quote = ""告诉函数不要将任何字符视为引号。
  5. 相对丰度的计算:

    • 这部分代码首先使用mutateacross函数来修改数据框中的每一列(除了clade_name列)。
    • ~ round(.x / sum(.x), 10)是一个匿名函数,它将每个值除以其所在列的总和,然后将结果四舍五入到10位小数。这里.x代表当前列的每个值。
    • 这个过程计算了每个物种在每个样本中的相对丰度。
  6. write.table(relative_abundance, "relative_abundance.txt", sep = "\t", row.names = FALSE, quote = FALSE)

    • 这行代码将处理后的数据(相对丰度)写入一个新的TXT文件relative_abundance.txt
    • sep = "\t"指定使用制表符作为列之间的分隔符。
    • row.names = FALSE表示在输出文件中不包含行名。
    • quote = FALSE确保输出的文本不包含引号。