Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 生态模拟,如何比较矩阵中的多个数字以做出决策_R_Matrix - Fatal编程技术网

R 生态模拟,如何比较矩阵中的多个数字以做出决策

R 生态模拟,如何比较矩阵中的多个数字以做出决策,r,matrix,R,Matrix,我在开发一个生态模拟时遇到了一个问题。我在下面附上了一些代码来强调这个问题。总之,假设我有3个不同质量的位置。动物想要移动到最高质量的位置(数量越大,质量越高),但无法区分差异小于或等于0.1的质量(这是更大循环的一部分,因此此过程将重复数千次) 例如,在这种情况下(个体从位置2开始): a我建议为该位置创建一个类。我不知道你会如何在r里做到这一点,但我相信你能理解这一点 这是我建议的算法: 对于每个位置,对于每个其他位置,如果生物体能够分辨质量的差异,则将排名较低的位置标记为“坏”(可能使用

我在开发一个生态模拟时遇到了一个问题。我在下面附上了一些代码来强调这个问题。总之,假设我有3个不同质量的位置。动物想要移动到最高质量的位置(数量越大,质量越高),但无法区分差异小于或等于0.1的质量(这是更大循环的一部分,因此此过程将重复数千次)

例如,在这种情况下(个体从位置2开始):


a我建议为该位置创建一个类。我不知道你会如何在r里做到这一点,但我相信你能理解这一点

这是我建议的算法:

  • 对于每个位置,对于每个其他位置,如果生物体能够分辨质量的差异,则将排名较低的位置标记为“坏”(可能使用布尔数组;不要在对象内部使用标志,因为这违反了良好的设计)
  • 在那些for循环中,如果获取标记有标志的位置,请使用continue语句以节省时间
  • 现在,再次浏览该列表,并将所有未标记该标志的列表复制到新列表中
  • 检查列表的长度,并将其用于决策

您需要查看并学习如何创建spatial-data.frames。矩阵不是将这项任务推广到两个或更多维度的好选择。从这个问题来看,不清楚这是否是一个明确的空间模型。如果动物能够评估并移动到景观中的任何细胞,它们的空间排列就无关紧要了。另一方面,如果动物仅限于评估和在相邻细胞之间移动,那么位置确实很重要。了解每个位置的质量是否发生变化,或者在整个模拟过程中它们的排名是否保持不变,也会很有用。仅凭这个片段很难给出明确的建议。泰勒,谢谢你的评论。这在空间上是明确的(目前有20个位置,但可能会发生变化),而且随着个体在栖息地之间移动,“质量”指标也在频繁变化。个人只能采样相邻的补丁,我对构建良好的补丁存在所有问题。我现在可以确定一个人将要比较的位置,并以上述方式找出这些位置和质量。现在我已经确定了个人可以比较哪些补丁,我所需要做的就是找出一种方法来做出上述决定
a<-matrix(c(1,2,3,.6,.9,.7),nrow=2,ncol=3,byrow=TRUE)
attributes(a)$dimnames<-list(c("Location","Quality"),c())
a

          [,1] [,2] [,3]
Location  1.0  2.0  3.0
Quality   0.6  0.9  0.7
a<-matrix(c(1,2,3,.5,.7,.8),nrow=2,ncol=3,byrow=TRUE)
attributes(a)$dimnames<-list(c("Location","Quality"),c())
a

          [,1] [,2] [,3]
Location  1.0  2.0  3.0
Quality   0.5  0.7  0.8
a<-matrix(c(1,2,3,.9,.7,.6),nrow=2,ncol=3,byrow=TRUE)
attributes(a)$dimnames<-list(c("Location","Quality"),c())
a
         [,1] [,2] [,3]
Location  1.0  2.0  3.0
Quality   0.9  0.7  0.6
a<-matrix(c(1,2,3,.8,.7,.6),nrow=2,ncol=3,byrow=TRUE)
attributes(a)$dimnames<-list(c("Location","Quality"),c())
a
         [,1] [,2] [,3]
Location  1.0  2.0  3.0
Quality   0.8  0.7  0.6