【发布时间】:2014-05-25 03:01:14
【问题描述】:
我在 for 循环中运行代码,该循环对矩阵中的单个单元格进行一些简单的算术运算。矩阵的所有单元格的值应始终介于 0 和 1 之间。矩阵中的值不应变为负数或超过 1。我无法使用传统的“最小”和“最大”限制设置如何解决这个问题。
示例数据:
x<-1:5
y<-runif(length(x)*length(x),0,1)
M<-matrix(y, length(x), length(x))
例如从每个单元格中减去 0.01(在我的实际情况下,在循环的每次迭代中要减去的 0.01 来自特定单元格,而不是此处所写的每个单元格,但我认为这不应该影响如何设置 min/最大?
for (i in 1:50){
M[,]<-M[,]-0.01
}
例如或者如果将 0.01 添加到矩阵的每个单元格:
for (i in 1:50){
M[,]<-M[,]+0.01
}
如果在其中任何一个 for 循环之后返回矩阵,矩阵中的值将不会像我希望的那样包含在 0 和 1 范围内。我对如何做到这一点感到困惑。
如果我正在对矩阵的一个“单元格”做一些特定的事情,例如
for (i in 1:100){
M[3,4]<-M[3,4]-0.01
}
这会改变如何设置最小值/最大值吗?
【问题讨论】: