用于灵敏度分析的 R 嵌套 For 循环
R Nested For Loop for a Sensitivity Analysis
我是 R 的新手,我已经尝试了一段时间来做一些事情,我认为这很简单,但我总是失败(不幸的是,对我来说,这并不意味着它是不简单!)。
我定义了一个函数,它将时间序列作为输入并在最后输出单个值(作为向量)。该函数有两个参数(从现在开始 n 和 m)影响输出,所以它看起来像这样:
fnc <- function(x, n, m)
我的目标是store/see(可能在矩阵中?)输出同时改变n和m(所以,一个基本的敏感性分析,如果这有意义?)。
我的尝试是创建一个空矩阵,运行 几个 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
我是 R 的新手,我已经尝试了一段时间来做一些事情,我认为这很简单,但我总是失败(不幸的是,对我来说,这并不意味着它是不简单!)。
我定义了一个函数,它将时间序列作为输入并在最后输出单个值(作为向量)。该函数有两个参数(从现在开始 n 和 m)影响输出,所以它看起来像这样:
fnc <- function(x, n, m)
我的目标是store/see(可能在矩阵中?)输出同时改变n和m(所以,一个基本的敏感性分析,如果这有意义?)。
我的尝试是创建一个空矩阵,运行 几个 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