用于灵敏度分析的 R 嵌套 For 循环

R Nested For Loop for a Sensitivity Analysis

我是 R 的新手,我已经尝试了一段时间来做一些事情,我认为这很简单,但我总是失败(不幸的是,对我来说,这并不意味着它是不简单!)。

我定义了一个函数,它将时间序列作为输入并在最后输出单个值(作为向量)。该函数有两个参数(从现在开始 nm)影响输出,所以它看起来像这样:

fnc <- function(x, n, m)

我的目标是store/see(可能在矩阵中?)输出同时改变nm(所以,一个基本的敏感性分析,如果这有意义?)。

我的尝试是创建一个空矩阵,运行 几个 n 和 m 值的嵌套 for 循环,并相应地填充矩阵。

所以,像这样 (我知道下面的代码会出错,因为 i,j 值最终会超出 3x3 矩阵的范围,但这只是其中之一我做的不合逻辑的试验):

n_lens = c(750, 1000, 1250)
m_lens = c(250, 300, 350)

output_matrix = matrix(data=NA, nrow = length(n_lens), ncol = length(m_lens))

for (i in n_lens){
  for (j in m_lens){
        output_matrix[i,j] <- function(x, i, j)
      }  
    }

不幸的是,他们都远未完成工作。

非常感谢suggestion/tip。

我自由地定义了一个简单的 fnc 函数。 这个想法是循环 n_lens 的索引而不是 n_lens 的值。 与 R 的其他方式相比,R 中的嵌套 for 循环可能(将会?)更慢。

它产生所需的输出。

fnc <- function(x, n, m)
{ 
  return (n+m)
}

n_lens = c(750, 1000, 1250)
m_lens = c(250, 300, 350)
x = 1

len_n = length(n_lens)
len_m = length(m_lens)
output_matrix = matrix(data=NA, nrow = length(n_lens), ncol = length(m_lens))

for (i in seq(len_n)){
  for (j in seq(len_m)){
    output_matrix[i,j] <- fnc(x, n_lens[i], m_lens[j])
  }  
}
output_matrix

收到的输出是

     [,1] [,2] [,3]
[1,] 1000 1050 1100
[2,] 1250 1300 1350
[3,] 1500 1550 1600