1

我正在尝试使用 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

在计算这个指数时,我已经克服了几个错误,但这就是我在被卡住之前已经走了多远。一些同事建议问题可能来自我的文件和示例文件之间的分隔差异(我的是表格),但我不明白如何破解或修复它。

如果有人可以提出解决方案,将不胜感激。

4

0 回答 0