Сделать переменную именем

Я создал свою первую функцию и очень горжусь собой, но я стараюсь сделать ее лучше. Он просматривает таблицу изобилия, определяет наиболее распространенный столбец в каждой строке, а затем дает мне имя этого столбца, которое соотносится с другой таблицей данных. Это делается с помощью объектов, созданных с помощью пакета phyloseq.

find.top.phyla <- function(x){
  require(phyloseq)
  otu <- otu_table(x)
  tax <- tax_table(x)
  j<-apply(otu,1,which.max)
  k <- j[!duplicated(j)]
  l <- data.frame(tax[k,])
  m <- data.frame(otu[,k])
  colnames(m) <- l$Phylum
  n <- colnames(m)[apply(m,1,which.max)]
  m$TopPhyla <- n
  return(m)
}
find.top.phyla(top.pdy.phyl)

Это дает мне

     Proteobacteria    Actinobacteria    Bacteroidetes    TopPhyla
S1        45                25                10          Proteobacteria
S2        14                35                5           ActinoBacteria
S3        88                19                400         Bacteroidetes

Чтобы сделать его более полезным, я бы хотел точно сказать, какой уровень таксона мне нужен, и выложить другую таблицу с таксономией сверху с соответствующим изобилием во фрейме данных и наиболее распространенным таксоном, определенным для каждой строки, указанной в фрейме данных., Как показано выше.

find.top.taxa <- function(x,taxa){
  require(phyloseq)
  top.taxa <- tax_glom(x, taxa)
  otu <- otu_table(top.taxa)
  tax <- tax_table(top.taxa)
  j<-apply(otu,1,which.max)
  k <- j[!duplicated(j)]
  l <- data.frame(tax[k,])
  m <- data.frame(otu[,k])
  s <- as.name(taxa)      # This is Where the issue is occuring
  colnames(m) <- l$make.names(taxa)  # This is Where the issue is occuring
  n <- colnames(m)[apply(m,1,which.max)]
  m$make.names(taxa) <- n   # This is Where the issue is occuring
  return(m)

}

Я определил, где возникают проблемы. Я пробовал "is.name", "as.name", "taxa" (что на самом деле не нравится) и несколько других итераций. По сути, я хотел бы превратить аргумент "taxa" в переменную строку и указать столбец, который находится в другой таблице, со столбцом, идентичным аргументу "taxa". то есть: find.top.taxa(top.pdy, "Class") и / или find.top.taxa(top.pdy, "Genus")

0 ответов

Другие вопросы по тегам