如何将`I()`与`paste0`一起使用?

ptr64

我有多个数据框,我想在每个数据框上评估(多个)不同的模型。MWE

df1 <- data.frame(A3 = c(-5, 5, 1), 
                  B3 = c(0, 10, 1))
df2 <- data.frame(A4 = c(5, 15, 1))
                  B4 = c(10, 20, 1))

myfun <- function(arg1, arg2){ # arg1 =1 or 2
  if (arg2 == 1){
    eqn <- paste0("A", arg1+2) ~ paste0("B", arg1+2) + I(as.name(paste0("B", arg1+2))^2)
  } else {
    eqn <- paste0("A", arg1+2) ~ paste0("B", arg1+2) + I(as.name(paste0("B", arg1+2))^2) +I(as.name(paste0("B", arg1+2))^3)
  }
 
  return (lm(formula = eqn, data = eval(as.name(paste0("df", arg1)))
    )
  )
}

例如,如果我跑步,myfun(1,2)我想得到lm(A4 ~ B4 + I(B4^2) + I(B4^3), data = df2)但是无论如何,我都会收到以下错误消息Error in (paste0("B", arg1 +2))^2 : non-numeric argument to binary operator从我读到的内容中?I,我想这是因为R隔离了传入的任何内容I(),所以它没有意识到我正在尝试转换变量:这是怎么回事,我可以解决吗?另外,有没有更好的方法来快速估算多个模型?我发现所有类似的问题在data.frame各个模型中都使用相同的问题,而我不得不考虑来自不同模型的不同数据帧的响应(和预测变量)。

斯蒂芬

也许这就是您要寻找的:

问题是您正在对字符串进行数学运算,即(paste0("B", arg1 +2))^2尝试对字符串进行平方运算,这就是为什么会出现错误的原因。在Inytead中,您可以将公式作为字符串简单地粘在一起,并通过as.formula以下方式将其转换为公式

df1 <- data.frame(A3 = c(-5, 5, 1), 
                  B3 = c(0, 10, 1))
df2 <- data.frame(A4 = c(5, 15, 1))
B4 = c(10, 20, 1)

myfun <- function(arg1, arg2){ # arg1 =1 or 2
  if (arg2 == 1){
    eqn <- paste0("A", arg1+2, " ~ B", arg1+2," + I(B", arg1+2, "^2)")
  } else {
    eqn <- paste0("A", arg1+2, " ~ B", arg1+2," + I(B", arg1+2, "^2) + I(B", arg1+2, "^3)")
  }
  
  return (lm(formula = as.formula(eqn), data = eval(as.name(paste0("df", arg1)))
  )
  )
}

myfun(2, 1)
#> 
#> Call:
#> lm(formula = as.formula(eqn), data = eval(as.name(paste0("df", 
#>     arg1))))
#> 
#> Coefficients:
#> (Intercept)           B4      I(B4^2)  
#>     0.84795      0.12281      0.02924

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一起使用startsWith和paste0

来自分类Dev

R mutate() 与 paste0() 一起工作

来自分类Dev

data.table和.SDcols与paste0一起创建字符向量

来自分类Dev

如何将 Auth0 与 typescript-express-decorators 一起使用

来自分类Dev

如何将视图模型与 i18n 模型一起使用?

来自分类Dev

如何将地图与休眠注释一起使用

来自分类Dev

如何将MySQL REPLACE与变量一起使用?

来自分类Dev

如何将NSOperationQueue与NSURLSession一起使用?

来自分类Dev

如何将Cayley与Postgres后端一起使用?

来自分类Dev

如何将ContextFlyout与ListView一起使用?

来自分类Dev

如何将ActiveModelSerializer与group_by一起使用?

来自分类Dev

如何将requestAnimationFrame与TypeScript对象一起使用?

来自分类Dev

如何将Silex授权与OpenID一起使用?

来自分类Dev

如何将Sinon与Typescript一起使用?

来自分类Dev

如何将Viewholder与ExpandableListView一起使用?

来自分类Dev

如何将IN与块而不是对象一起使用?

来自分类Dev

如何将PostgreSQL与JSONB数据一起使用

来自分类Dev

如何将QVector与多个对象一起使用

来自分类Dev

如何将CSS calc()与继承一起使用?

来自分类Dev

如何将XCTAssertNil与可选结构一起使用?

来自分类Dev

如何将AdControl与多个AdUnitId一起使用?

来自分类Dev

如何将DataContractJsonSerializer与auth令牌一起使用

来自分类Dev

如何将Jest与React Native一起使用

来自分类Dev

如何将componentsSeparatedByString与多个对象一起使用

来自分类Dev

如何将TomcatEmbeddedServletContainerFactory与AbstractAnnotationConfigDispatcherServletInitializer一起使用

来自分类Dev

如何将TIdWhois与SOCKS代理一起使用

来自分类Dev

如何将ltrace与通配符一起使用

来自分类Dev

如何将Pikaday与ReactJS一起使用?

来自分类Dev

如何将Fuseki与Jena TDB一起使用

Related 相关文章

  1. 1

    一起使用startsWith和paste0

  2. 2

    R mutate() 与 paste0() 一起工作

  3. 3

    data.table和.SDcols与paste0一起创建字符向量

  4. 4

    如何将 Auth0 与 typescript-express-decorators 一起使用

  5. 5

    如何将视图模型与 i18n 模型一起使用?

  6. 6

    如何将地图与休眠注释一起使用

  7. 7

    如何将MySQL REPLACE与变量一起使用?

  8. 8

    如何将NSOperationQueue与NSURLSession一起使用?

  9. 9

    如何将Cayley与Postgres后端一起使用?

  10. 10

    如何将ContextFlyout与ListView一起使用?

  11. 11

    如何将ActiveModelSerializer与group_by一起使用?

  12. 12

    如何将requestAnimationFrame与TypeScript对象一起使用?

  13. 13

    如何将Silex授权与OpenID一起使用?

  14. 14

    如何将Sinon与Typescript一起使用?

  15. 15

    如何将Viewholder与ExpandableListView一起使用?

  16. 16

    如何将IN与块而不是对象一起使用?

  17. 17

    如何将PostgreSQL与JSONB数据一起使用

  18. 18

    如何将QVector与多个对象一起使用

  19. 19

    如何将CSS calc()与继承一起使用?

  20. 20

    如何将XCTAssertNil与可选结构一起使用?

  21. 21

    如何将AdControl与多个AdUnitId一起使用?

  22. 22

    如何将DataContractJsonSerializer与auth令牌一起使用

  23. 23

    如何将Jest与React Native一起使用

  24. 24

    如何将componentsSeparatedByString与多个对象一起使用

  25. 25

    如何将TomcatEmbeddedServletContainerFactory与AbstractAnnotationConfigDispatcherServletInitializer一起使用

  26. 26

    如何将TIdWhois与SOCKS代理一起使用

  27. 27

    如何将ltrace与通配符一起使用

  28. 28

    如何将Pikaday与ReactJS一起使用?

  29. 29

    如何将Fuseki与Jena TDB一起使用

热门标签

归档