将R中的现有数据转换为Phyloseq OTU表

时间:2019-11-13 23:07:40

标签: r dataframe import phyloseq

我一直在尝试对qiime2创建并通过read.table()上传到R的asv_table,asv_id和元数据进行16S分析。我已经能够成功导入asv_id和元数据(分别使用tax_table()sample_data()),但是我在为自己的asv_table挣扎。

我的asv_table的结构是一个数据框,其中包含我的分类单元的标头,而我的行是示例(我也尝试过使用转置数据进行此操作,其中我的分类单元是行,而我的示例是列)。我最初的尝试很简单:

ps <- phyloseq(otu_table(asv_table, taxa_are_rows = FALSE))

然而这产生了:

Error in validObject(.Object) : invalid class “otu_table” object: 
 Non-numeric matrix provided as OTU table.
Abundance is expected to be numeric.

这导致我尝试将数据的类别更改为数字,然后尝试再次导入:

asv_table_num <- data.matrix(asv_table, rownames.force = NA)

ps <- phyloseq(otu_table(otumat_num, taxa_are_rows = FALSE))

Error in validObject(.Object) : invalid class “phyloseq” object: 
 Component taxa/OTU names do not match.
 Taxa indices are critical to analysis.
 Try taxa_names()

我担心这会越来越麻烦,因为一个更简单的解决方案使我瞪大了脸(我很难在互联网上研究我的问题……通常表明我没有人创造一个独特的问题否则遇到)。

我将对该主题提供任何指导或帮助!

谢谢。

1 个答案:

答案 0 :(得分:0)

我最终能够弄清楚我的问题,所以我将向所有可能遇到相同问题的人发布我的解决方案。

library(tidyverse)
devtools::install_github("jbisanz/qiime2R")
library(qiime2R)

asv_table <- read_qza("table.qza")

library(phyloseq)

ps <- qza_to_phyloseq(features = "table.qza")