我是R的新手,目前正致力于简单的模拟。我正在创建一个谱系结构(数据框)并对其进行编辑以进行一些简单的计算。 我正在使用2个不同的包:
Synbreed
,模拟谱系数据框Optisel
,允许使用谱系结构进行计算我遇到的问题如下:一旦我用带有synbreed的谱系创建了数据框,我加载了optiSel。在我这样做并尝试使用数据框更改或计算某些内容之后,数据框中的所有值都将消失/变为NA ...
我想用这些函数进行for循环,所以我需要确保它们是兼容的。奇怪的是,当我保存数据框,关闭R并再次导入模拟数据框时,脚本可以正常工作。
这里我有一个简单的脚本:
library(synbreed)
ped.test<-simul.pedigree(generations=10,ids=10,animals=T)
#create血统数据框
数据框需要一些小编辑:
ped.test$Par1[ped.test$Par1==0]<-NA
ped.test$Par2[ped.test$Par2==0]<-NA
ped.test$sex[ped.test$sex==1]<-2
ped.test$sex[ped.test$sex==0]<-1
数据框是一个谱系结构:
class(ped.test)
library(optiSel)
#Load optiSel包,一切顺利
colnames(ped.test)<-c("Indiv", "Sire", "Dam", "Born", "Sex")
ped.test
pedig<-prePed(ped.test)
这需要上面显示的更改才能接受谱系结构,但由于新创建的谱系结构为空,它不会起作用。
答案 0 :(得分:0)
我尝试重现您使用包synbreed
(v.0.12.6)和包optiSel
(v.0.9.1)提供的代码。
关键是来自simul.pedigree
包的函数synbreed
从{{1}返回类"pedigree"
和"data.frame"
和prePed
函数的对象package需要一个类optiSel
的对象(try data.frame
)。
因此,您可以将?prePed
的类重新指定为 一个ped.test
:
data.frame