在 R 中使用 popbio(projection.matrix 和 boot.transitions)选择未定义的列

Undefined columns selected using popbio (projection.matrix and boot.transitions) in R

我正在尝试创建投影矩阵并计算 bootstrap 转换,遵循 Stubben 和 Milligan (2007) 使用 R 中的包 popbio 记录的相同程序。

我已将我的数据格式化为与包中可用的 "test.census" 示例非常相似。但是,当我使用函数 projection.matrixboot.transitions 时,我收到以下错误:

Error in [.data.frame(transitions, , stage) : undefined columns selected

如果我向函数添加额外的参数,我可以让 projection.matrix 工作,但不能 boot.transitions

有人知道为什么会这样吗?有什么解决办法吗?

我花了很多时间研究为什么会发生这种情况,并且在发帖之前我已经尝试了所有替代方法。我将非常感谢任何帮助或见解。

这是我的数据集的一小部分:

structure(list(Site = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), Plot = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L), Tag = c(1032L, 1002L, 1027L, 1013L, 1005L, 1037L, 1030L, 
1028L, 1004L, 1010L, 1029L, 1018L, 1015L, 1007L, 1070L, 1056L, 
1042L, 1078L, 1071L, 1055L, 1079L, 1065L, 1062L, 1054L, 1045L, 
1073L, 1053L, 1046L, 1044L, 1113L, 1098L, 1093L, 1086L, 1118L, 
1115L, 1082L, 1090L, 1114L, 1107L, 1099L, 1120L, 1111L, 1101L, 
1096L, 1084L, 1092L, 1032L, 1002L, 1027L, 1013L, 1005L, 1037L, 
1030L, 1028L, 1004L, 1010L, 1029L, 1018L, 1015L, 1007L, 1070L, 
1056L, 1042L, 1078L, 1071L, 1055L, 1079L, 1065L, 1062L, 1054L, 
1045L, 1073L, 1053L, 1046L, 1044L, 1113L, 1098L, 1093L, 1086L, 
1118L, 1115L, 1082L, 1090L, 1114L, 1107L, 1099L, 1120L, 1111L, 
1101L, 1096L, 1084L, 1092L), Status = structure(c(4L, 4L, 5L, 
5L, 5L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 5L, 5L, 
5L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 5L, 5L, 
5L, 5L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 5L, 1L, 1L, 1L, 3L, 
3L, 3L, 3L, 5L, 2L, 2L, 3L, 2L, 2L, 5L, 1L, 1L, 5L, 1L, 3L, 3L, 
3L, 1L, 3L, 2L, 2L, 2L, 1L, 3L, 1L, 1L, 1L, 1L, 5L, 5L, 3L, 5L, 
3L, 2L, 3L, 3L, 2L, 3L, 3L, 3L, 2L), .Label = c("DEAD", "LG", 
"MD", "SEED", "SM"), class = "factor"), Year = c(2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 
2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2016L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L
), Ramets = c(1L, 1L, 1L, 1L, 1L, 8L, 4L, 5L, 2L, 4L, 14L, 11L, 
17L, 20L, 1L, 1L, 1L, 1L, 1L, 1L, 6L, 2L, 4L, 6L, 9L, 22L, 54L, 
11L, 12L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 10L, 2L, 4L, 11L, 18L, 
18L, 16L, 11L, 13L, 1L, 0L, 0L, 0L, 7L, 7L, 3L, 9L, 1L, 14L, 
11L, 3L, 14L, 17L, 1L, 0L, 0L, 1L, 0L, 2L, 10L, 3L, 0L, 10L, 
13L, 19L, 51L, 0L, 9L, 0L, 0L, 0L, 0L, 1L, 1L, 5L, 1L, 2L, 11L, 
3L, 8L, 32L, 6L, 7L, 7L, 15L), Seeds = c(0, 0, 479.5146293, 479.5146293, 
479.5146293, 3836.117034, 1918.058517, 2397.573146, 959.0292585, 
1918.058517, 6713.20481, 5274.660922, 8151.748697, 9590.292585, 
0, 0, 0, 479.5146293, 479.5146293, 479.5146293, 2877.087776, 
959.0292585, 1918.058517, 2877.087776, 4315.631663, 10549.32184, 
25893.78998, 5274.660922, 5754.175551, 0, 0, 0, 479.5146293, 
479.5146293, 479.5146293, 479.5146293, 479.5146293, 4795.146293, 
959.0292585, 1918.058517, 5274.660922, 8631.263327, 8631.263327, 
7672.234068, 5274.660922, 6233.69018, 479.5146293, 0, 0, 0, 3356.602405, 
3356.602405, 1438.543888, 4315.631663, 479.5146293, 6713.20481, 
5274.660922, 1438.543888, 6713.20481, 8151.748697, 479.5146293, 
0, 0, 479.5146293, 0, 959.0292585, 4795.146293, 1438.543888, 
0, 4795.146293, 6233.69018, 9110.777956, 24455.24609, 0, 4315.631663, 
0, 0, 0, 0, 479.5146293, 479.5146293, 2397.573146, 479.5146293, 
959.0292585, 5274.660922, 1438.543888, 3836.117034, 15344.46814, 
2877.087776, 3356.602405, 3356.602405, 7192.719439), SEEDS = c(0, 
0, 2.206153846, 2.206153846, 2.206153846, 17.64923077, 8.824615385, 
11.03076923, 4.412307692, 8.824615385, 30.88615385, 24.26769231, 
37.50461538, 44.12307692, 0, 0, 0, 2.206153846, 2.206153846, 
2.206153846, 13.23692308, 4.412307692, 8.824615385, 13.23692308, 
19.85538462, 48.53538462, 119.1323077, 24.26769231, 26.47384615, 
0, 0, 0, 2.206153846, 2.206153846, 2.206153846, 2.206153846, 
2.206153846, 22.06153846, 4.412307692, 8.824615385, 24.26769231, 
39.71076923, 39.71076923, 35.29846154, 24.26769231, 28.68, 2.206153846, 
0, 0, 0, 15.44307692, 15.44307692, 6.618461538, 19.85538462, 
2.206153846, 30.88615385, 24.26769231, 6.618461538, 30.88615385, 
37.50461538, 2.206153846, 0, 0, 2.206153846, 0, 4.412307692, 
22.06153846, 6.618461538, 0, 22.06153846, 28.68, 41.91692308, 
112.5138462, 0, 19.85538462, 0, 0, 0, 0, 2.206153846, 2.206153846, 
11.03076923, 2.206153846, 4.412307692, 24.26769231, 6.618461538, 
17.64923077, 70.59692308, 13.23692308, 15.44307692, 15.44307692, 
33.09230769)), .Names = c("Site", "Plot", "Tag", "Status", "Year", 
"Ramets", "Seeds", "SEEDS"), row.names = c(NA, 92L), class = "data.frame")

这是我的代码:

##build a stage-fate data frame
trans3<-subset(merge(fate3, fate3, by = "Tag",
                    sort = FALSE), Year.x == Year.y - 1)
head2(trans3)
##rename columns
rownames(trans3)<-1:nrow(trans3)
colnames(trans3)[2:15]<-c("Site", "Plot", "Stage", "Year", "Ramets", "Seeds", "SEED", "Site", "Plot", "Fate", "Year2", "Ramets2", 
                         "Seeds2", "SEED2")
head2(trans3)
##subset for one year
trans31<-subset(trans3, Year==2016, c(Tag, Site, Plot, Stage, Ramets, Seeds, Fate, SEED))
trans31
##order stages
stages<-c("SEED", "SM", "MD", "LG")
trans31$Stage<-ordered(trans31$Stage, levels=stages)
##projection matrix - error:undefined columns selected
projection.matrix(trans31, sort = stages)
##projeciton matrix - this works
a<-projection.matrix(trans31, Stage, Fate, SEED, sort=stages)
a
##boot transitions - error:undefined columns selected
boot.transitions(trans31, 5)

查看 package code,您似乎需要将列重命名为 stagefate(全部小写)。