Сделать переменную именем
Я создал свою первую функцию и очень горжусь собой, но я стараюсь сделать ее лучше. Он просматривает таблицу изобилия, определяет наиболее распространенный столбец в каждой строке, а затем дает мне имя этого столбца, которое соотносится с другой таблицей данных. Это делается с помощью объектов, созданных с помощью пакета 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")