我想在adegenet中从没有定义群体的genepop文件开始进行PCA分析。我导入了这样的数据:
datapop <- read.genepop('tous.gen', ncode=3, quiet = FALSE)
它有效,我可以在缩放数据后执行PCA。但是我想根据它们的原始种群使用s.class在PCA轴上绘制结果/个体。我有一个vcf文件,每个人都有一个三个代码。我在R中导入它:
pops_list <- read.csv('liste_pops.csv', header=FALSE)
但现在我如何用它来定义genind对象datapop
中的人口水平?我试过这样的事:
setPop(datapop, formula = NULL)
setPop(datapop)
"Erreur : formula must be a valid formula object."
然后我应该如何在s.class中使用它?谢谢Didier
没有一个工作的例子,这很难说,但也许你可以在这里找到你的问题的解决方案:How to add strata information to a genind
从你的例子和setPop方法如何工作的方式,你的行setPop(datapop, formula = NULL)
将无法工作,因为你不会定义任何东西。你真的必须这样做:
setPop(datapop) <- pops_list
同时还保证pops_list是具有适当格式的因素
我知道这有点晚了,但是这样做的方法是将pops_list
添加为strata
,然后使用setPop()
选择某个列:
strata(datapop) <- pops_list
setPop(datapop) <- ~myPop # set the population to the column called "myPop" in the data frame