定义adegenet中PCA分析的人口水平

问题描述 投票:0回答:2

我想在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

r pca genetics
2个回答
0
投票

没有一个工作的例子,这很难说,但也许你可以在这里找到你的问题的解决方案:How to add strata information to a genind

从你的例子和setPop方法如何工作的方式,你的行setPop(datapop, formula = NULL)将无法工作,因为你不会定义任何东西。你真的必须这样做:

setPop(datapop) <- pops_list

同时还保证pops_list是具有适当格式的因素


0
投票

我知道这有点晚了,但是这样做的方法是将pops_list添加为strata,然后使用setPop()选择某个列:

strata(datapop) <- pops_list
setPop(datapop) <- ~myPop # set the population to the column called "myPop" in the data frame
© www.soinside.com 2019 - 2024. All rights reserved.