美文网首页
R语言:family_genus组合用作菌属名

R语言:family_genus组合用作菌属名

作者: 胡童远 | 来源:发表于2020-10-15 17:40 被阅读0次

导读

菌属丰度表一个常见的问题:不同菌科相同属名。此类菌属作为行名读进R会报错,因为R要求数据行名必须unique。一种很好的解决方式是用family_genus组合作为菌属名。来写一个一键处理的函数。

一、数据

Taxonomy = c("Prevotella", "Staphylococcus", "Ralstonia")
sample_1 = c(1, 2, 3)
sample_2 = c(4, 5, 6)
Tax_detail = c("k__Bacteria;p__Bacteroidetes;c__Bacteroidia;o__Bacteroidales;f__Prevotellaceae;g__Prevotella;", "k__Bacteria;p__Firmicutes;c__Bacilli;o__Bacillales;f__Staphylococcaceae;g__Staphylococcus;", "k__Bacteria;p__Proteobacteria;c__Betaproteobacteria;o__Burkholderiales;f__Oxalobacteraceae;g__Ralstonia;")

data = data.frame(Taxonomy, sample_1, sample_2, Tax_detail)
data

二、获取family_genus

# 函数
handle = function(data, prefix="name")
{
    # 删除注释不清
    unknown = grep("Unspecified|unclassified|metagenome", data[, length(data[1,])])
    data = data[-unknown,]
    
    # 提取family genus
    new_name = c()
    for(i in 1:length(data[,1]))
    {
        input = as.character(data$Tax_detail[i])
        new_name = c(new_name, paste(unlist(strsplit(input, split="__|;"))[c(10, 12)], collapse="_")) 
    }
    # 保存mapping文件

    
    # 删除首列,family_genusu作行名
    data = data[, -c(1, length(data[1,]))]
    rownames(data) = new_name
    
    # 返回值
    return(data)
}

三、处理和结果

data2 = handle(data, "data")

报错信息:Error in .rowNamesDF<-(x, value = value) : invalid 'row.names' length
报错了,但是处理外部读取的数据是没问题的,把函数框架去掉一行行运行是OK的

相关文章

  • R语言:family_genus组合用作菌属名

    导读 菌属丰度表一个常见的问题:不同菌科相同属名。此类菌属作为行名读进R会报错,因为R要求数据行名必须unique...

  • R基础快速入门(2)

    文集地址 R语言快速入门 R语言变量 R语言中的变量可以存储原子向量,原子向量组或许多R对象的组合 注意:使用ca...

  • R语言-组合全排列问题

    问题1:5组数据,从每组数据中抽取n个全组合,列出所有组合 结果1 问题2:5组数据,随机从每组数据中抽取n个数据...

  • R语言-图片的组合与拼接

    可用的包有:customLayout包ggpubr包gredExtra包grid.arrange函数cowplot...

  • R语言 函数

    函数是一组组合在一起以执行特定任务的语句。 R语言具有大量内置函数,用户可以创建自己的函数。在R语言中,函数是一个...

  • R语言paste函数

    R语言paste函数中许多字符串使用 paste() 函数来组合。它可以将任意数量的参数组合在一起。语法粘贴(pa...

  • 2019-07-25

    verilog语言使用 rtl级建模和组合逻辑级区别:rtl级包含rst和clk信号 变量类型 wire 连线 r...

  • R语言技巧每日分享day3-生成组合数combn()

    R语言中的combn()函数用于生成x中取m个元素的所有组合 用法: combn(x, m, FUN, simpl...

  • 学习小组Day4笔记-皇晓燕

    R语言和R studio R语言是全面的统计分析平台,计算作图等等 R studio是R语言的操作平台 下载R语言...

  • 存档

    目前最全的R语言-图片的组合与拼接 https://www.jianshu.com/p/fcfc3c7cb4e0[...

网友评论

      本文标题:R语言:family_genus组合用作菌属名

      本文链接:https://www.haomeiwen.com/subject/viropktx.html