【发布时间】:2016-09-26 05:07:53
【问题描述】:
我有一个包含数千行的 data.frame。我正在对这些数据的子集应用几行代码。
我在一列“mergeorder$phylum”中有 4 个子集:
[1] "ascomycota" "basidiomycota" "unidentified"
[4] "chytridiomycota"
在每个子集上,我必须分别应用这组函数:
ascomycota<-mergeorder[mergeorder$phylum %in% c("ascomycota"), ]
group_ascomycota <- aggregate(ascomycota[,2:62], by=list(ascomycota$order), FUN=sum)
row.names(group_ascomycota)<-group_ascomycota[,1]
group_ascomycota$sum <-apply(group_ascomycota[,-1],1,sum)
dat5 <-sweep(group_ascomycota[,2:62], 2, colSums(group_ascomycota[2:62]), '/')
dat5$sum <-apply(group_ascomycota[,-1],1,sum)
reorder_dat5 <- dat5[order(dat5$sum, decreasing=T),]
reorder_dat5$OTU_ID <- row.names(reorder_dat5)
FINITO<-reorder_dat5[1:15,]
write.table(FINITO, file="output_ITS1/ITS1_ascomycota_order_top15.csv", col.names=TRUE,row.names=FALSE, sep=",", quote=FALSE)
此代码有效。但是,我想应用此代码,而无需手动将每个“子囊菌”替换为“担子菌”、“未识别”、“壶菌”。
我应该使用什么功能?我应该如何使用它?我一直在为sapply()、repeat() 苦苦挣扎,但还没有走远。
最终结果应该执行整个代码并导出 csv 单独文件。
非常感谢您的回答
【问题讨论】: