首页 > 解决方案 > 如何从矩阵中调用变量...从列表中?

问题描述

基本上,它在标题中。虽然有更多细节,但我有四个参数集需要组织在矩阵中,我组织在一个列表(Alphaset)中,每个都有 4 个变量。但是我需要将特定变量调用到一个循环中,它将通过一个方程并应该给我一个图。

我和我对 R 的贫乏知识尝试了导致效率低下的不同组合,例如“Alphaset[2,1,1]”或“Alphaset[2(1,1)]”(这是我要显示的示例第二个矩阵的第一行第一列的变量)。

#Parameters set on types (lambda 1, lambda 2, alphas)

Lambda1set<-c(5,5,3,3.2)
Lambda2set<-c(4,4,5,3)
Alphaset<-list(matrix(c(0.01, 0.007, 0.0045, 0.01),ncol = 2, byrow = TRUE),
            matrix(c(0.01, 0.003, 0.007, 0.01),ncol = 2, byrow = TRUE),
            matrix(c(0.01, 0.0055, 0.003, 0.01),ncol = 2, byrow = TRUE),
            matrix(c(0.005, 0.005, 0.0045, 0.004),ncol = 2, byrow = TRUE))

#Creating vectors
TimeVec<-seq(0,years,1)
N1<-matrix(0,4,years+1)
N2<-matrix(0,4,years+1)

#INITIALIZATION
N0 <- 40
N1[1] <-N0
N2[1] <-N0

for (t in 1:years){
  for(i in 1:4){
  N1[i,t+1]<-(Lambda1set[i]*N1[i,t])/(1+alphs[1,1]*N1[i,t]+alphs[1,2]*N2[i,t])
  N2[i,t+1]<-(lambda2set[i]*N2[i,t])/(1+alphs[2,1]*N1[i,t]+alphs[2,2]*N2[i,t])
  }
}

plot(TimeVec,N1,type="l",xlab='Time (years)',ylab='Population Density',col='blue', 
     lwd = 2,ylim = c(0,400))

在这里,您可以在方程式中看到“alphs[..,..]”应该代表我要使用的每个 i 矩阵中的哪个变量。

但是关于我的矩阵列表,我该如何称呼它们呢?

标签: r

解决方案


只需将alphs变量定义如下:

alphs <- Alphaset[[i]]

就在第 21 行之后:for(i in 1:4){


推荐阅读