有没有一种简单的方法来探索在R中调整参数时函数的输出是如何变化的?

有没有一种简单的方法来探索在R中调整参数时函数的输出是如何变化的?,r,R,我正在对数据集应用一种方法,并试图确定它对每个参数的敏感性。该方法使用了“通用”值,但我很好奇,如果每个值都较大或较小,输出会有什么不同。用一个简单的例子来描述可能更容易: library(tidyverse) library(magrittr) data <- data.frame(let = c("Alpha","Beta","Gamma","Delta"), num = c(1,2,3,4)) data$var = NA ftn <- function(df, A, B,

我正在对数据集应用一种方法,并试图确定它对每个参数的敏感性。该方法使用了“通用”值,但我很好奇,如果每个值都较大或较小,输出会有什么不同。用一个简单的例子来描述可能更容易:

library(tidyverse)
library(magrittr)

data <- data.frame(let = c("Alpha","Beta","Gamma","Delta"), num = c(1,2,3,4))

data$var = NA

ftn <- function(df, A, B, C){
  df %<>% mutate(var = num * (A*3 + B*(2/3) - C))
}

data <- ftn(data, A = 4, B = 2, C = 6)
因此,这将是绘制x1与改变参数的情况,其中ymin=x0.5,ymax=x1.5


我有点不知所措,不知道如何在不手动更改数字的情况下实现这一点。我试着简单地输入一个向量(例如a=c(2,4,6)),但没有成功。我很感激在这个可复制的示例中,只需手动更改内容并单独编写它们不会花费太长时间,但在我的实际代码中,这将是一个真正的faff。

我想我理解您在做什么。一种方法是使用
tidyr
包中的
crossing
中的一些技巧来制作设计矩阵。然后可以使用
nest
map
获得结果。如下所示:

# Cross makes the model grid
crossing(A = c(2,4,6), B = c(1,2,3), C = c(3,6,9), num = c(1,2,3,4)) %>% 
  mutate(scenario_id = row_number()) %>%  # ID for grouping
  group_by(scenario_id) %>%  # Group for nesting
  nest() %>%  # Nesting
  mutate(result = map(data, ftn)) %>%  # Now apply your function for each scenario
  unnest() # Return the result

这会给你类似的东西:

# A tibble: 108 x 10
   scenario_id     A     B     C   num    A1    B1    C1  num1     var
         <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl>
 1           1     2     1     3     1     2     1     3     1   3.67 
 2           2     2     1     3     2     2     1     3     2   7.33 
 3           3     2     1     3     3     2     1     3     3  11    
 4           4     2     1     3     4     2     1     3     4  14.7  
 5           5     2     1     6     1     2     1     6     1   0.667
#一个tible:108 x 10
方案id A B C数值A1 B1 C1数值M1变量
1           1     2     1     3     1     2     1     3     1   3.67 
2           2     2     1     3     2     2     1     3     2   7.33 
3           3     2     1     3     3     2     1     3     3  11    
4           4     2     1     3     4     2     1     3     4  14.7  
5           5     2     1     6     1     2     1     6     1   0.667
# A tibble: 108 x 10
   scenario_id     A     B     C   num    A1    B1    C1  num1     var
         <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl>
 1           1     2     1     3     1     2     1     3     1   3.67 
 2           2     2     1     3     2     2     1     3     2   7.33 
 3           3     2     1     3     3     2     1     3     3  11    
 4           4     2     1     3     4     2     1     3     4  14.7  
 5           5     2     1     6     1     2     1     6     1   0.667