我正在尝试使用 phylocomr 包中的 ph_pd() 计算系统发育多样性。我有一个 nexus 格式的 phyllo 文件,这是我从从 bridtree.org 下载的 1000 棵树池中获得的共识树,然后使用导出
writeNexus(tree, file = "C:/R/pdtree.nex")
我还有我的示例文件(.csv),其中包含三列和列表作为分隔符,看起来或多或少像这样
样本 | 丰富 | 物种代码 |
---|---|---|
血统1 | 0 | 种1 |
血统1 | 1 | 物种2 |
血统1 | 1 | 物种3 |
血统2 | 0 | 种1 |
血统2 | 1 | 物种2 |
血统2 | 0 | 物种3 |
... | ... | ... |
可以在手册中找到使用 ph_pd() 的示例:
sfile <- system.file("examples/sample_comstruct", package = "phylocomr")
pfile <- system.file("examples/phylo_comstruct", package = "phylocomr")
# from data.frame
sampledf <- read.table(sfile, header = FALSE,
stringsAsFactors = FALSE)
phylo_str <- readLines(pfile)
ph_pd(sample = sampledf, phylo = phylo_str)
# from files
sample_str <- paste0(readLines(sfile), collapse = "\n")
sfile2 <- tempfile()
cat(sample_str, file = sfile2, sep = '\n')
pfile2 <- tempfile()
phylo_str <- readLines(pfile)
cat(phylo_str, file = pfile2, sep = '\n')
ph_pd(sample = sfile2, phylo = pfile2)
因此,我尝试像这样计算样本的 pd:
sample_str <- paste0(readLines('C:/R/sample_phylo.csv'), collapse = "\n") ##el archivo con solo datos de hospedadores para COLL1
sfile2 <- tempfile()
cat(sample_str, file = sfile2, sep = '\n')
pfile2 <- tempfile()
phylo_str <- readLines('C:/R/pdtree.nex') ##el arbol consenso que he exportado en formato nexus
cat(phylo_str, file = pfile2, sep = '\n')
ph_pd(sample = sfile2, phylo = pfile2)
我收到以下错误:
Error in utils::read.table(text = out, header = TRUE, stringsAsFactors = FALSE) :
no lines available in input
在计算这个指数时,我已经克服了几个错误,但这就是我在被卡住之前已经走了多远。一些同事建议问题可能来自我的文件和示例文件之间的分隔差异(我的是表格),但我不明白如何破解或修复它。
如果有人可以提出解决方案,将不胜感激。