Matrix 应用popbio“;“投影矩阵”;多个肥力并生成矩阵列表

Matrix 应用popbio“;“投影矩阵”;多个肥力并生成矩阵列表,matrix,transition,modeling,population,Matrix,Transition,Modeling,Population,我通常通过环顾这里找到问题的答案(我很高兴stackovergflow的存在!),但我还没有找到这个问题的答案。。。我希望你能帮助我:) 我正在使用“popbio”包中的projection.matrix()函数创建转换矩阵。在函数中,必须指定“阶段”和“命运”(两个分类变量)以及“肥力”(数字列) 一切正常,但我想将该函数应用于数据框中的1:n生育率列,并获得一个矩阵列表,这些矩阵是由具有不同生育率值的相同分类变量生成的 这就是我的数据框架的样子(我只包括我在这个问题中使用的变量): 使用 返

我通常通过环顾这里找到问题的答案(我很高兴stackovergflow的存在!),但我还没有找到这个问题的答案。。。我希望你能帮助我:)

我正在使用“popbio”包中的
projection.matrix()
函数创建转换矩阵。在函数中,必须指定“阶段”和“命运”(两个分类变量)以及“肥力”(数字列)

一切正常,但我想将该函数应用于数据框中的1:n生育率列,并获得一个矩阵列表,这些矩阵是由具有不同生育率值的相同分类变量生成的

这就是我的数据框架的样子(我只包括我在这个问题中使用的变量):

使用

返回一个转换矩阵,该矩阵中包含生育率值

我的问题是,我想一次性生成一个具有不同生育率值的矩阵列表(实际上,我的数据长度>=300,四种不同治疗的生育率列~100…)

我将感谢你的帮助

-W

PS popbio中的函数是这样的:

    projection.matrix =
function (transitions, stage = NULL, fate = NULL, fertility = NULL, 
    sort = NULL, add = NULL, TF = FALSE) 
{
    if (missing(stage)) {
        stage <- "stage"
    }
    if (missing(fate)) {
        fate <- "fate"
    }
    nl <- as.list(1:ncol(transitions))
    names(nl) <- names(transitions)
    stage <- eval(substitute(stage), nl, parent.frame())
    fate <- eval(substitute(fate), nl, parent.frame())
    if (is.null(transitions[, stage])) {
        stop("No stage column matching ", stage)
    }
    if (is.null(transitions[, fate])) {
        stop("No fate column matching ", fate)
    }
    if (missing(sort)) {
        sort <- levels(transitions[, stage])
    }
    if (missing(fertility)) {
        fertility <- intersect(sort, names(transitions))
    }
    fertility <- eval(substitute(fertility), nl, parent.frame())
    tf <- table(transitions[, fate], transitions[, stage])
    T_matrix <- try(prop.table(tf, 2)[sort, sort], silent = TRUE)
    if (class(T_matrix) == "try-error") {
        warning(paste("Error sorting matrix.\n  Make sure that levels in stage and fate columns\n  match stages listed in sort option above.\n Printing unsorted matrix instead!\n"), 
            call. = FALSE)
        sort <- TRUE
        T_matrix <- prop.table(tf, 2)
    }
    T_matrix[is.nan(T_matrix)] <- 0
    if (length(add) > 0) {
        for (i in seq(1, length(add), 3)) {
            T_matrix[add[i + 0], add[i + 1]] <- as.numeric(add[i + 
                2])
        }
    }
    n <- length(fertility)
    F_matrix <- T_matrix * 0
    if (n == 0) {
        warning("Missing a fertility column with individual fertility rates\n", 
            call. = FALSE)
    }
    else {
        for (i in 1:n) {
            fert <- tapply(transitions[, fertility[i]], transitions[, 
                stage], mean, na.rm = TRUE)[sort]
            F_matrix[i, ] <- fert
        }
    }
    F_matrix[is.na(F_matrix)] <- 0
    if (TF) {
        list(T = T_matrix, F = F_matrix)
    }
    else {
        T_matrix + F_matrix
    }
}
<environment: namespace:popbio>
projection.matrix=
函数(转换,阶段=NULL,命运=NULL,生育率=NULL,
sort=NULL,add=NULL,TF=FALSE)
{
如果(缺失(阶段)){

阶段Caner Aktas通过Research Gate回答了我的问题

答复:

fertility.list<-vector("list",length(suffix))

names(fertility.list)<-fer.names

for(i in suffix) fertility.list[[i]]<-projection.matrix(df,fertility=fer.names[i])

fertility.list 

生育率。列表Caner Aktas通过Research Gate回答了我的问题

答复:

fertility.list<-vector("list",length(suffix))

names(fertility.list)<-fer.names

for(i in suffix) fertility.list[[i]]<-projection.matrix(df,fertility=fer.names[i])

fertility.list 
fertility.list
fertility.list<-vector("list",length(suffix))

names(fertility.list)<-fer.names

for(i in suffix) fertility.list[[i]]<-projection.matrix(df,fertility=fer.names[i])

fertility.list