`paste0`과 함께`I ()`를 어떻게 사용할 수 있습니까?

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. 내가 읽은 내용에서 ?IR이 전달되는 모든 것을 분리하기 때문에 이것이 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

express.static과 함께 미들웨어를 어떻게 사용할 수 있습니까?

분류에서Dev

Gon gem과 함께 Jbuilder 내에서 Rails 도우미를 어떻게 사용할 수 있습니까?

분류에서Dev

Ext JS Classic 툴킷과 함께 Froala HTML 편집기를 어떻게 사용할 수 있습니까?

분류에서Dev

`add --patch` 등과 함께 내 자신의 diff 도구를 어떻게 사용할 수 있습니까?

분류에서Dev

redux-toolkit과 함께 notistick / (모든 스낵바)를 어떻게 사용하고 반응 할 수 있습니까?

분류에서Dev

일반 레코드 및 테이블 유형과 함께 'InsertQuery'를 어떻게 사용할 수 있습니까?

분류에서Dev

조인과 함께 EF Where () 절에서 식 트리를 어떻게 사용할 수 있습니까?

분류에서Dev

얀과 함께 최신 버전의 노드를 어떻게 사용할 수 있습니까?

분류에서Dev

아도니스와 함께 nginx를 어떻게 사용할 수 있습니까?

분류에서Dev

prepend () 함수를 어떻게 사용할 수 있습니까?

분류에서Dev

반응 후크와 함께 Mutex를 어떻게 사용할 수 있습니까?

분류에서Dev

CatchUnwind Future와 함께 AssertUnwindSafe를 어떻게 사용할 수 있습니까?

분류에서Dev

jquery (if-else)와 함께 localstorage를 어떻게 사용할 수 있습니까?

분류에서Dev

angularJS와 함께 ajax를 어떻게 사용할 수 있습니까?

분류에서Dev

OSGI와 함께 Spring Batch를 어떻게 사용할 수 있습니까?

분류에서Dev

Swift에서 Cocoapods와 함께 Chartboost를 어떻게 사용할 수 있습니까?

분류에서Dev

"git show"와 함께 "source-highlight"를 어떻게 사용할 수 있습니까?

분류에서Dev

그놈과 함께 Awesome WM을 어떻게 사용할 수 있습니까?

분류에서Dev

ForEach 목록과 함께 RandomAccessCollection을 어떻게 사용할 수 있습니까?

분류에서Dev

std :: function과 함께 다형성을 어떻게 사용할 수 있습니까?

분류에서Dev

Netty에서 NioDatagramChannel과 함께 EventExecutorGroup을 어떻게 사용할 수 있습니까?

분류에서Dev

apache camel과 함께 elasticsearch 2.2.1을 어떻게 사용할 수 있습니까?

분류에서Dev

knex의 where 절과 함께 hasColumn을 어떻게 사용할 수 있습니까?

분류에서Dev

x : String과 함께 x : Static을 어떻게 사용할 수 있습니까?

분류에서Dev

: not 의사 클래스와 함께 : before 의사 클래스를 어떻게 함께 사용할 수 있습니까?

분류에서Dev

Jquery에서 URL과 함께 href 태그를 사용하여 변수를 어떻게 보낼 수 있습니까?

분류에서Dev

C ++에서 함께 뭔가를하는 sort () 함수를 어떻게 사용할 수 있습니까?

분류에서Dev

mapboxgl과 함께 Google 위성 레이어를 사용할 수 있습니까?

분류에서Dev

c에서 인수와 함께 함수 포인터를 어떻게 사용할 수 있습니까?

Related 관련 기사

  1. 1

    express.static과 함께 미들웨어를 어떻게 사용할 수 있습니까?

  2. 2

    Gon gem과 함께 Jbuilder 내에서 Rails 도우미를 어떻게 사용할 수 있습니까?

  3. 3

    Ext JS Classic 툴킷과 함께 Froala HTML 편집기를 어떻게 사용할 수 있습니까?

  4. 4

    `add --patch` 등과 함께 내 자신의 diff 도구를 어떻게 사용할 수 있습니까?

  5. 5

    redux-toolkit과 함께 notistick / (모든 스낵바)를 어떻게 사용하고 반응 할 수 있습니까?

  6. 6

    일반 레코드 및 테이블 유형과 함께 'InsertQuery'를 어떻게 사용할 수 있습니까?

  7. 7

    조인과 함께 EF Where () 절에서 식 트리를 어떻게 사용할 수 있습니까?

  8. 8

    얀과 함께 최신 버전의 노드를 어떻게 사용할 수 있습니까?

  9. 9

    아도니스와 함께 nginx를 어떻게 사용할 수 있습니까?

  10. 10

    prepend () 함수를 어떻게 사용할 수 있습니까?

  11. 11

    반응 후크와 함께 Mutex를 어떻게 사용할 수 있습니까?

  12. 12

    CatchUnwind Future와 함께 AssertUnwindSafe를 어떻게 사용할 수 있습니까?

  13. 13

    jquery (if-else)와 함께 localstorage를 어떻게 사용할 수 있습니까?

  14. 14

    angularJS와 함께 ajax를 어떻게 사용할 수 있습니까?

  15. 15

    OSGI와 함께 Spring Batch를 어떻게 사용할 수 있습니까?

  16. 16

    Swift에서 Cocoapods와 함께 Chartboost를 어떻게 사용할 수 있습니까?

  17. 17

    "git show"와 함께 "source-highlight"를 어떻게 사용할 수 있습니까?

  18. 18

    그놈과 함께 Awesome WM을 어떻게 사용할 수 있습니까?

  19. 19

    ForEach 목록과 함께 RandomAccessCollection을 어떻게 사용할 수 있습니까?

  20. 20

    std :: function과 함께 다형성을 어떻게 사용할 수 있습니까?

  21. 21

    Netty에서 NioDatagramChannel과 함께 EventExecutorGroup을 어떻게 사용할 수 있습니까?

  22. 22

    apache camel과 함께 elasticsearch 2.2.1을 어떻게 사용할 수 있습니까?

  23. 23

    knex의 where 절과 함께 hasColumn을 어떻게 사용할 수 있습니까?

  24. 24

    x : String과 함께 x : Static을 어떻게 사용할 수 있습니까?

  25. 25

    : not 의사 클래스와 함께 : before 의사 클래스를 어떻게 함께 사용할 수 있습니까?

  26. 26

    Jquery에서 URL과 함께 href 태그를 사용하여 변수를 어떻게 보낼 수 있습니까?

  27. 27

    C ++에서 함께 뭔가를하는 sort () 함수를 어떻게 사용할 수 있습니까?

  28. 28

    mapboxgl과 함께 Google 위성 레이어를 사용할 수 있습니까?

  29. 29

    c에서 인수와 함께 함수 포인터를 어떻게 사용할 수 있습니까?

뜨겁다태그

보관