首页 > 其他分享 >R:OTU根据分类级别拆分

R:OTU根据分类级别拆分

时间:2024-05-06 16:11:45浏览次数:19  
标签:文件 分类 library 拆分 级别 OTU

输入文件
输出文件

rm(list = ls())
setwd("C:\\Users\\Administrator\\Desktop\\microtable") #设置工作目录
library(dplyr)
library(tidyr)
library(readr)

# 读取文件
data <- readLines('1.txt')

# 定义分类等级的前缀和列名
prefixes <- c("k__", "p__", "c__", "o__", "f__", "g__", "s__")
levels <- c("Kingdom", "Phylum", "Class", "Order", "Family", "Genus", "Species")

# 拆分并填充缺失的分类
split_data <- lapply(data, function(line) {
  # 初始化分类向量
  classification <- setNames(rep("unclassified", length(levels)), levels)
  
  # 遍历每个前缀
  for(i in seq_along(prefixes)) {
    prefix <- prefixes[i]
    pattern <- paste0(prefix, "([^|]+)")
    matches <- regmatches(line, gregexpr(pattern, line))
    
    # 如果找到匹配项,则更新分类
    if(length(matches[[1]]) > 0) {
      name <- gsub(prefix, "", matches[[1]])
      classification[levels[i]] <- name
    }
  }
  
  return(c(line, classification))
})

# 将结果转换为数据框
result_df <- do.call(rbind, split_data)

# 添加列名
colnames(result_df) <- c("Original_Classification", levels)

# 转换为字符矩阵以便输出
result_matrix <- apply(result_df, 2, as.character)

# 输出到txt文件,包括列名
write.table(result_matrix, 'path_to_output_file.txt', quote = FALSE, sep = "\t", row.names = FALSE, col.names = TRUE)


标签:文件,分类,library,拆分,级别,OTU
From: https://www.cnblogs.com/wzbzk/p/18175215

相关文章

  • Direct3D 11(D3D11)是Microsoft DirectX API 中的一部分,Direct3D 12(D3D12)是微软开发的一
    Direct3D11编程指南-Win32apps|MicrosoftLearn什么是Direct3D12-Win32apps|MicrosoftLearnDirect3D12编程指南-Win32apps|MicrosoftLearn你可以使用以下命令来查询系统是否支持D3D12:CopyCodedxdiag运行此命令将打开DirectX诊断工具,你可以在其中......
  • 数据库隔离级别
    1.概述数据库事务的隔离级别有4个,由低到高依次为Readuncommitted、Readcommitted、Repeatableread、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。脏读不可重复读幻读Readuncommitted√√√Readcommitted×√√Rep......
  • mysql 隔离级别为可重复读如何解决幻读
    MySQL中的可重复读(RepeatableRead,RR)隔离级别通过几种机制来解决幻读问题:1.**多版本并发控制(MVCC)**:在可重复读隔离级别下,MySQL使用MVCC来管理事务读取的数据版本。这意味着在事务开始时,系统会创建一个ReadView(读视图),该视图记录了当前所有活跃事务的ID。当执行SELECT查询时......
  • klog在日志文件中error级别日志重复打印2次
    问题现象packagemainimport( "flag" "gopkg.in/natefinch/lumberjack.v2" "k8s.io/klog/v2")funcmain(){ klog.InitFlags(nil) flag.Set("logtostderr","false") flag.Parse() l:=&lumberjack.Logger......
  • 对象属性值按长度拆分扩展一个新集合
    packagecom.xx.xx.core.utils;importcn.hutool.core.util.ReflectUtil;importcom.xx.tools.utils.BeanUtil;importcom.xx.tools.utils.StringUtil;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importlombok.experimen......
  • 41天【代码随想录算法训练营34期】第九章 动态规划part03 (● 343. 整数拆分 ● 96.
    343.整数拆分classSolution:defintegerBreak(self,n:int)->int:dp=[0]*(n+1)dp[2]=1foriinrange(3,n+1):forjinrange(1,i//2+1):dp[i]=max(dp[i],(i-j)*j,dp[i-j]*j)......
  • openGauss MOT隔离级别
    MOT隔离级别即使MOT完全兼容ACID,openGauss1.0并非支持所有的隔离级别。下表介绍了各隔离级别,以及MOT支持和不支持的内容。表1隔离级别隔离级别说明READUNCOMMITTEDMOT不支持READCOMMITTEDMOT支持READCOMMITTED(读已提交)隔离级别保证任何正在读取的数据在......
  • openGauss MOT隔离级别
    MOT隔离级别即使MOT完全兼容ACID,openGauss1.0并非支持所有的隔离级别。下表介绍了各隔离级别,以及MOT支持和不支持的内容。表1隔离级别隔离级别说明READUNCOMMITTEDMOT不支持READCOMMITTEDMOT支持READCOMMITTED(读已提交)隔离级别保证任何正在读取的数据在......
  • Linux启动过程以及7种运行级别
    Linux启动过程Linux启动需要经历一些步骤,这些步骤确保系统能够在各种不同的硬件和配置条件下可靠地启动和运行,并且具有足够的灵活性以适应不同的使用场景和需求,具体步骤如下:BIOS/UEFI初始化(硬件初始化):执行基本输入输出系统(BIOS)或统一可扩展接口(UEFI)中的初始化程序。这些程......
  • 单词拆分
    https://leetcode.cn/problems/word-break/description/?envType=study-plan-v2&envId=top-interview-150classSolution:defwordBreak(self,s:str,wordDict:List[str])->bool:n=len(s)dp=[False]*(n+1)dp[0]=True......