NOCTA
NOCTA

Reputation: 1

R: How can I fix an as.matrix() error message?

I am trying to create a taxonomic reference for some 16S/18S data in R and have been running into issues when following this tutorial. I am trying to create an OTU table from a taxonomy/sequence table that was bootstrapped for only 18S data. Here is the error I receive and I am not sure how to go about fixing it:

OTU <- seqtab.nochim_18S %>%  
  column_to_rownames("OTUNumber") %>%    
  select_if(is.numeric) %>%  
  select(-contains("_boot")) %>% 
  as.matrix() %>%  
  otu_table(taxa_are_rows = TRUE)

Error in h(simpleError(msg, call)) :
error in evaluating the argument 'object' in selecting a method for function 'otu_table': error in evaluating the argument 'x' in selecting a method for function 'as.matrix': .data must be a data frame without row names.

seqchim_18S_struct <- structure(
  list(
    Kingdom = c(
      "Bacteria",
      "Bacteria",
      "Bacteria",
      "Bacteria",
      "Bacteria",
      "Bacteria"
    ),
    Supergroups = c(
      "Bacteria_X",
      "Bacteria_X",
      "Bacteria_X",
      "Bacteria_X",
      "Bacteria_X",
      "Bacteria_X"
    ),
    Divison = c(
      "Proteobacteria",
      "Firmicutes",
      "Proteobacteria",
      "Firmicutes",
      "Firmicutes",
      "Firmicutes"
    ),
    Class = c(
      "Gammaproteobacteria",
      "Clostridia",
      "Gammaproteobacteria",
      "Bacilli",
      "Clostridia",
      "Clostridia"
    ),
    Order = c(
      "Enterobacteriales",
      "Clostridiales",
      "Enterobacteriales",
      "Bacillales",
      "Clostridiales",
      "Clostridiales"
    ),
    Family = c(
      "Enterobacteriaceae",
      "Clostridiaceae_1",
      "Enterobacteriaceae",
      "Planococcaceae",
      "Clostridiaceae_1",
      "Ruminococcaceae"
    ),
    Genus = c(
      "Brenneria",
      "Clostridium_sensu_stricto_1",
      "EscherichiaShigella",
      "Lysinibacillus",
      "Clostridium_sensu_stricto_1",
      "Hydrogenoanaerobacterium"
    ),
    Species = c(
      "Brenneria_sp.",
      "Clostridium_sensu_stricto_1_sp.",
      "EscherichiaShigella_sp.",
      "Lysinibacillus_sp.",
      "Clostridium_sensu_stricto_1_sp.",
      "Hydrogenoanaerobacterium_sp."
    ),
    Kingdom_boot = c(100L, 100L, 100L, 100L, 100L, 100L),
    Supergroups_boot = c(99L,
                         100L, 100L, 100L, 100L, 100L),
    Divison_boot = c(98L, 100L, 100L,
                     100L, 100L, 100L),
    Class_boot = c(98L, 100L, 100L, 100L, 100L,
                   100L),
    Order_boot = c(87L, 100L, 100L, 100L, 100L, 100L),
    Family_boot = c(87L,
                    99L, 100L, 97L, 100L, 92L),
    Genus_boot = c(45L, 73L, 98L, 97L,
                   100L, 44L),
    Species_boot = c(45L, 73L, 98L, 97L, 100L, 44L),
    OTUNumber = c(
      "otu0013",
      "otu0014",
      "otu0015",
      "otu0017",
      "otu0018",
      "otu0019"
    ),
    sequence = c(
      "GGGCGTAAAGGGCACGCAGGTGGTACGTTAAGTCAGATGTGAAATCCCCGGGCTTAACCCGGGAACGGCATTTGAAACTGGGGTGCTGGAGTCCTGTAGAGGGGGGTGGAATTCCAGGTGTAGCGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACAGAGACTGAC",
      "GGGCGTAAAGGGAGCGTAGGCGGATGATTAAGTGGGATGTGAAATACTTGGGCTCAACCCGAGCACTGCATTCCAAACTGATCATCTAGAGTGCAGGAGAGGAGAGTGGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAACACCAGTGGCGAAGGCGACTCTCTGGACTGTAACTGAC",
      "GGGCGTAAAGCGCACGCAGGCGGTTTGTTAAGTCAGATGTGAGATCCCCGGGCTCAACCTGGGAACTGCATCTGATACTGGCAAGCTTGAGTCTCGTAGAGGGGGGTAGAATTCCAGGTGTAGCGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACGAAGACTGAC",
      "GGGCGTAAAGCGCGCGCAGGTGGTTTCTTAAGTCTGATGTGAAAGCCCACGGCTCAACCGTGGAGGGTCATTGGAAACTGGGAAACTTGAGTGCAGAAGAGGATAGTGGAATTCCAAGTGTAGCGGTGAAATGCGTAGAGATTTGGAGGAACACCAGTGGCGAAGGCGACTATCTGGTCTGTAACTGAC",
      "GGGCGTAAAGGGAGCGTAGGCGGATTTTTAAGTGGGATGTGAAATACCCGGGCTCAACCTGGGTGCTGCATTCCAAACTGGGAATCTAGAGTACAGGAGGGGAGAGTGGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAACACCAGTGGCGAAGGCGACTCTCTGGACTGTAACTGAC",
      "GGGTGTAAAGGGAGCGTAGGCGGGACTATAAGTTGAATGTGAAATCTATCGGCTCAACCGGTAGGCTGCGTTCAAAACTGTAGTTCTTGAGTGAAGTAGAGGCAGGCGGAATTCCTAGTGTAGCGGTGAAATGCGTAGATATTAGGAGGAACACCAGTGGCGAAGGCGGTCTGCTGGGCTTTAACTGAC"
    ),
    V1 = c(39142L, 34324L, 33303L, 21631L, 19944L, 18875L)
  ),
  row.names = c(
    "GGGCGTAAAGGGCACGCAGGTGGTACGTTAAGTCAGATGTGAAATCCCCGGGCTTAACCCGGGAACGGCATTTGAAACTGGGGTGCTGGAGTCCTGTAGAGGGGGGTGGAATTCCAGGTGTAGCGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACAGAGACTGAC",
    "GGGCGTAAAGGGAGCGTAGGCGGATGATTAAGTGGGATGTGAAATACTTGGGCTCAACCCGAGCACTGCATTCCAAACTGATCATCTAGAGTGCAGGAGAGGAGAGTGGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAACACCAGTGGCGAAGGCGACTCTCTGGACTGTAACTGAC",
    "GGGCGTAAAGCGCACGCAGGCGGTTTGTTAAGTCAGATGTGAGATCCCCGGGCTCAACCTGGGAACTGCATCTGATACTGGCAAGCTTGAGTCTCGTAGAGGGGGGTAGAATTCCAGGTGTAGCGGTGAAATGCGTAGAGATCTGGAGGAATACCGGTGGCGAAGGCGGCCCCCTGGACGAAGACTGAC",
    "GGGCGTAAAGCGCGCGCAGGTGGTTTCTTAAGTCTGATGTGAAAGCCCACGGCTCAACCGTGGAGGGTCATTGGAAACTGGGAAACTTGAGTGCAGAAGAGGATAGTGGAATTCCAAGTGTAGCGGTGAAATGCGTAGAGATTTGGAGGAACACCAGTGGCGAAGGCGACTATCTGGTCTGTAACTGAC",
    "GGGCGTAAAGGGAGCGTAGGCGGATTTTTAAGTGGGATGTGAAATACCCGGGCTCAACCTGGGTGCTGCATTCCAAACTGGGAATCTAGAGTACAGGAGGGGAGAGTGGAATTCCTAGTGTAGCGGTGAAATGCGTAGAGATTAGGAAGAACACCAGTGGCGAAGGCGACTCTCTGGACTGTAACTGAC",
    "GGGTGTAAAGGGAGCGTAGGCGGGACTATAAGTTGAATGTGAAATCTATCGGCTCAACCGGTAGGCTGCGTTCAAAACTGTAGTTCTTGAGTGAAGTAGAGGCAGGCGGAATTCCTAGTGTAGCGGTGAAATGCGTAGATATTAGGAGGAACACCAGTGGCGAAGGCGGTCTGCTGGGCTTTAACTGAC"
  ),
  class = "data.frame"
)

Upvotes: 0

Views: 1181

Answers (1)

gmt
gmt

Reputation: 345

The error occurs because column_to_rownames expects a data.frame (or tibble) without row.names. This means that you need to remove the row.names from your data.frame. You can do this in base R, by setting:

row.names(seqchim_18S_struct) <- NULL

If you prefer a tidy solution, you can convert either the data.frame to a tibble (which automatically removes row.names) OR use the remove_rownames function

seqchim_18S_struct %>%
  as_tibble() %>%
  ...

seqchim_18S_struct %>%
  remove_rownames() %>%
  ...

You can safely remove your row.names without losing this information, because the information is redundant: the row.names store the same information as seqchim_18S_struct$sequence.

Upvotes: 1

Related Questions