在R中的for循环中创建具有更改名称的多个函数

经济学家

我有一个数据框“ data”,并想计算大约30个函数f(CS)。目的是为每个函数f(CS)找到CS uniroot我正在寻找一个循环,该循环生成函数f(CS)和函数结果(表示CS的结果)。

相关的问题:的R -命名多种功能在一个for循环,并在循环多种功能

这些函数应具有不同的名称(function_1,function_2,function_3等),并且每个函数使用数据帧“ data”中不同行的值。我尽力创建一个最小的可复制示例:

data <- data.frame(A=c(154,154,154,154,110154,102500,0,0,0,0,205200,0,0,0,0), 
                   B=c(-0.647, -0.738, -0.749, -0.691, -0.600, 2.455, 2.358, 2.289, 2.264, 2.267, 2.455, 2.358, 2.289, 2.264, 2.267))

function_1 <- function(CS){
          sum(data$A[1:5]/(1+data$B[1:5]/100+CS/10000)^(1:5) - 100000)
      }

function_2 <- function(CS){
      sum(data$A[6:10]/(1+data$B[6:10]/100+CS/10000)^(1:5) - 100000)
  }

function_3 <- function(CS){
      sum(data$A[11:15]/(1+data$B[11:15]/100+CS/10000)^(1:5) - 200000)
  }

请注意,function_3(200000)中的常数不是错字。正如我提到的,即时计算的根源为uniroot

uniroot(function_1, c(-1000,1000))$root #267.3119
uniroot(function_2, c(-1000,1000))$root #4.500001
uniroot(function_3, c(-1000,1000))$root #14.5

我尝试使用两个for循环,如下所示:

for (i in seq(from = 1, to = nrow(data)/5)){
noquote(paste0("function_",i,"")) <- function(CS){
           sum(data$A[1:5]/(1+data$B[1:5]/100+CS/10000)^(1:5))
   }
 }

for (i in seq(from = 1, to = nrow(data)/5)){
    uniroot(noquote(paste0("function_",i,")), c(-1000,1000))$root
  }

我不知道如何实现不断变化的常量和不断变化的函数名称,因为noquote(paste0())这似乎不起作用。如果您需要任何进一步的信息,请告诉我。

dmp

您已经接近了,但这不完全noquote是为了什么相反,使用的组合assignget,就像这样:

for (i in seq(from = 1, to = nrow(data)/5)){
   assign(paste0("function_",i)), function(CS){
           sum(data$A[1:5]/(1+data$B[1:5]/100+CS/10000)^(1:5))
   }
 }

for (i in seq(from = 1, to = nrow(data)/5)){
    uniroot(get(paste0("function_",i)), c(-1000,1000))$root
}

但是,我不确定示例中的第一个循环是否会重新创建您在问题的第一个代码块中手动列出的所需函数。也不应该为data变更建立索引吗?像这样?

for (i in seq(from = 1, to = nrow(data)/5)){
   indices <- (1+(i-1)*5):(5+(i-1)*5)
   assign(paste0("function_",i,"")), function(CS){
           sum(data$A[indices ]/(1+data$B[indices]/100+CS/10000)^(1:5))
   }
 }

无论如何,我敢肯定其他人会很快说,您可能可以找到一种方法来绕过像这样的对象名称。大多数人认为最佳实践是手动分配功能,然后使其更加灵活。在您提供的示例中,可以构造函数,使其将索引作为参数,然后只有一个可以通过多种方式使用的函数:

flexibleFunction <- function(CS, indices){
      sum(data$A[indices]/(1+data$B[indices]/100+CS/10000)^(1:5) - 100000)
  }

uniroot(flexibleFunction , c(-1000,1000), 1:5)$root
uniroot(flexibleFunction , c(-1000,1000), 6:10)$root

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在r for循环中的CrossTable函数中更改名称

来自分类Dev

根据R中具有已修改名称的先前列的值创建多个新列

来自分类Dev

在循环中创建多个具有不同名称的对象以存储在数组列表中

来自分类Dev

如何在 R 中的循环中运行具有多个不同长度参数的函数

来自分类Dev

R中的XML:具有循环名称的多个子代

来自分类Dev

使用更改名称的文件夹中具有给定名称的Python打开文件

来自分类Dev

Ruby-在循环中创建具有动态名称的方法

来自分类Dev

在Oracle中,如何更改名称中具有特殊字符的用户?

来自分类Dev

在Oracle中,如何更改名称中具有特殊字符的用户?

来自分类Dev

根据循环中df的名称更改多个df中的列

来自分类Dev

具有多个R函数的if条件的For循环

来自分类Dev

在R中的循环中更改公式内的变量名称

来自分类Dev

循环更改名称和时间窗口

来自分类Dev

如何创建具有多个shapefile数据集的for循环函数?

来自分类Dev

循环遍历目录中的文件-将其名称保存到文件中,然后更改名称

来自分类Dev

在Julia中的for循环中索引函数的名称

来自分类Dev

如何根据输入变量在 r 中创建多个具有单独名称的数据框

来自分类Dev

在clojurescript中,如何更改名称空间?

来自分类Dev

在clojurescript中,如何更改名称空间?

来自分类Dev

如何在foreach循环中创建具有多个xelement节点的顶级xelement

来自分类Dev

c3.js。在循环中创建具有相同类/ ID的多个div的图形?

来自分类Dev

在Linux中创建多个具有相同名称的文件

来自分类Dev

在tkinter中创建多个具有不同名称的按钮

来自分类Dev

在Linux中创建具有相同名称的多个文件

来自分类Dev

从具有更改名称的列计算行列最大值

来自分类Dev

如何在没有ID的图像中更改名称“数据原始”属性名称

来自分类Dev

使用php数组中元素的名称在循环中创建函数

来自分类Dev

在Vbs中创建txt文件时更改名称(如果存在)

来自分类Dev

在Vbs中创建txt文件时更改名称(如果存在)

Related 相关文章

  1. 1

    如何在r for循环中的CrossTable函数中更改名称

  2. 2

    根据R中具有已修改名称的先前列的值创建多个新列

  3. 3

    在循环中创建多个具有不同名称的对象以存储在数组列表中

  4. 4

    如何在 R 中的循环中运行具有多个不同长度参数的函数

  5. 5

    R中的XML:具有循环名称的多个子代

  6. 6

    使用更改名称的文件夹中具有给定名称的Python打开文件

  7. 7

    Ruby-在循环中创建具有动态名称的方法

  8. 8

    在Oracle中,如何更改名称中具有特殊字符的用户?

  9. 9

    在Oracle中,如何更改名称中具有特殊字符的用户?

  10. 10

    根据循环中df的名称更改多个df中的列

  11. 11

    具有多个R函数的if条件的For循环

  12. 12

    在R中的循环中更改公式内的变量名称

  13. 13

    循环更改名称和时间窗口

  14. 14

    如何创建具有多个shapefile数据集的for循环函数?

  15. 15

    循环遍历目录中的文件-将其名称保存到文件中,然后更改名称

  16. 16

    在Julia中的for循环中索引函数的名称

  17. 17

    如何根据输入变量在 r 中创建多个具有单独名称的数据框

  18. 18

    在clojurescript中,如何更改名称空间?

  19. 19

    在clojurescript中,如何更改名称空间?

  20. 20

    如何在foreach循环中创建具有多个xelement节点的顶级xelement

  21. 21

    c3.js。在循环中创建具有相同类/ ID的多个div的图形?

  22. 22

    在Linux中创建多个具有相同名称的文件

  23. 23

    在tkinter中创建多个具有不同名称的按钮

  24. 24

    在Linux中创建具有相同名称的多个文件

  25. 25

    从具有更改名称的列计算行列最大值

  26. 26

    如何在没有ID的图像中更改名称“数据原始”属性名称

  27. 27

    使用php数组中元素的名称在循环中创建函数

  28. 28

    在Vbs中创建txt文件时更改名称(如果存在)

  29. 29

    在Vbs中创建txt文件时更改名称(如果存在)

热门标签

归档