R에서 불필요한 for 루프를 피하는 방법

빌랄

나는 t- 분포에서 두 개의 벡터를 그린다. 즉 X와 엡실론과 조건에 따라 이들로부터 벡터로 Y를 생성한다. 여러 샘플을 시뮬레이션하는 것을 목표로합니다. 10,000 개의 샘플을 시뮬레이션하면 컴퓨터가 완료되는 데 오랜 시간이 걸립니다. for 루프를 피하여 계산 시간을 줄이고 싶습니다. 몇 가지 시도했지만 작동하지 않았습니다. for 루프를 피하고이 특정 for 루프에 대한 계산 시간을 줄이는 방법은 무엇입니까? 코드는 다음과 같습니다.

X <- rt(1250,5)
eps <- rt(1250,5)
Y <- replicate(1250,0)

for(i in 1:1250) {
  if(X[i]>quantile(X, 0.5)){
    Y[i] = X[i] + eps[i]
  }
  else { 
    Y[i] = 1.5*X[i] + eps[i]
  }
}

r2evans
  1. quantile(X,0.5)매번 다시 계산하지 마십시오 . 절대 변경되지 않으며 한 번 계산하고 저장된 값을 재사용합니다.

  2. 벡터화 된 연산을 사용하여 비교 및 ​​할당이 한 번에 전체 벡터에서 발생할 수 있음을 알고 있습니다. 다음과 같이 줄일 수 있습니다.

    X <- rt(1250,5)
    eps <- rt(1250,5)
    med <- quantile(X, 0.5)
    Y <- ifelse(X > med, 1, 1.5) * X + eps
    

여기에 설명 된 벡터화 된 작업에 대한 빠른 안내 :

set.seed(42)
X <- rt(10, 5)
eps <- rt(10, 5)
med <- quantile(X, 0.5)
X
#  [1]  1.9151  0.0878 -0.0773 -0.0618 -0.0480  5.0230  1.0924  0.8423  1.5165
# [10] -0.2601
eps
#  [1]  0.712 -1.048  2.233 -0.737 -1.273 -0.890  0.395 -1.828 -0.601 -0.392
med
#   50% 
# 0.465 

벡터를 스칼라 (또는 길이가 같은 벡터)와 비교하면 논리 / 부울 벡터를 얻습니다.

X > med
#  [1]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE

이로부터 ifelse벡터화 된 조건부입니다. if (...) {...} else {...}한 번에 하나의 길이 -1 논리를 다룰 수 있지만 한 번 ifelse에 벡터에서 작동합니다. 예를 들면 :

ifelse(c(T, F, F, T), 1:4, 11:14)
# [1]  1 12 13  4

다시 예제로 돌아가서 ifelse수학 연산을 계속 하고 추가합니다.이 연산은 벡터에서 스칼라로도 잘 작동합니다.

ifelse(X > med, 1, 1.5)
#  [1] 1.0 1.5 1.5 1.5 1.5 1.0 1.0 1.0 1.0 1.5
ifelse(X > med, 1, 1.5) * X
#  [1]  1.9151  0.1318 -0.1160 -0.0926 -0.0720  5.0230  1.0924  0.8423  1.5165
# [10] -0.3902

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++에서 rvalue 참조를 사용하여 불필요한 인스턴스를 피하는 방법

분류에서Dev

C ++에서 rvalue 참조를 사용하여 불필요한 인스턴스를 피하는 방법

분류에서Dev

for 루프에서 Java에서 불필요한 객체 생성을 방지하는 방법

분류에서Dev

numpy에서 불필요한 요소를 우아하게 삭제하는 방법은 무엇입니까?

분류에서Dev

Djinni에서 생성 된 불필요한 함수를 제거하는 방법-ToString (Java에서) / Description (Objc에서)?

분류에서Dev

Firestore에서 불필요한 문서 읽기를 방지하는 방법은 무엇입니까?

분류에서Dev

Linux에서 불필요한 파일을 정리하는 방법

분류에서Dev

SQL에서 While 루프를 피하는 방법

분류에서Dev

루프에서 쿼리를 피하는 방법

분류에서Dev

Makefile 레시피에서 for 루프를 구현하는 방법

분류에서Dev

Pandas DataFrame에서 for 루프를 피하는 효율적인 방법

분류에서Dev

셰프에서 루비 딥 카피를 수행하는 방법

분류에서Dev

Excel VBA에서 루프를 최적화하거나 가능한 한 피하는 방법

분류에서Dev

R에서 여기 루프를 피하는 방법은 무엇입니까?

분류에서Dev

시퀀스 및 패턴 : R에서 루프를 피하는 방법

분류에서Dev

R 데이터 프레임의 열 이름에서 불필요한 작은 따옴표 ( ')를 제거하는 방법은 무엇입니까?

분류에서Dev

불필요한 업데이트를 방지하는 방법

분류에서Dev

JQ를 사용하여 JSON에서 불필요한 항목을 제거하는 방법은 무엇입니까?

분류에서Dev

React에서 불필요한 다시 렌더링을 피하는 방법은 무엇입니까?

분류에서Dev

자바에서 불필요한 언 박싱-코드를 리팩터링하는 방법?

분류에서Dev

sympy에서 불필요한 괄호를 비활성화하는 방법은 무엇입니까?

분류에서Dev

핵심 데이터에서 불필요한 데이터를 제거하는 효율적인 방법

분류에서Dev

불필요한 GET을 피하고 서블릿을 통해 파일을 얻는 방법은 무엇입니까?

분류에서Dev

JavaFX에서 요소별로 루프를 실행하는 방법

분류에서Dev

루프에서 목록 요소를 삭제하는 방법

분류에서Dev

Android 프로젝트의 'libs'폴더에서 불필요한 jar를 제거하는 간단한 방법이 있습니까?

분류에서Dev

Android 프로젝트의 'libs'폴더에서 불필요한 jar를 제거하는 간단한 방법이 있습니까?

분류에서Dev

Pyspark에서 for 루프 또는 에피소드를 작성하는 방법

분류에서Dev

~ / .bashrc에서 무한 루프를 제거하는 방법?

Related 관련 기사

  1. 1

    C ++에서 rvalue 참조를 사용하여 불필요한 인스턴스를 피하는 방법

  2. 2

    C ++에서 rvalue 참조를 사용하여 불필요한 인스턴스를 피하는 방법

  3. 3

    for 루프에서 Java에서 불필요한 객체 생성을 방지하는 방법

  4. 4

    numpy에서 불필요한 요소를 우아하게 삭제하는 방법은 무엇입니까?

  5. 5

    Djinni에서 생성 된 불필요한 함수를 제거하는 방법-ToString (Java에서) / Description (Objc에서)?

  6. 6

    Firestore에서 불필요한 문서 읽기를 방지하는 방법은 무엇입니까?

  7. 7

    Linux에서 불필요한 파일을 정리하는 방법

  8. 8

    SQL에서 While 루프를 피하는 방법

  9. 9

    루프에서 쿼리를 피하는 방법

  10. 10

    Makefile 레시피에서 for 루프를 구현하는 방법

  11. 11

    Pandas DataFrame에서 for 루프를 피하는 효율적인 방법

  12. 12

    셰프에서 루비 딥 카피를 수행하는 방법

  13. 13

    Excel VBA에서 루프를 최적화하거나 가능한 한 피하는 방법

  14. 14

    R에서 여기 루프를 피하는 방법은 무엇입니까?

  15. 15

    시퀀스 및 패턴 : R에서 루프를 피하는 방법

  16. 16

    R 데이터 프레임의 열 이름에서 불필요한 작은 따옴표 ( ')를 제거하는 방법은 무엇입니까?

  17. 17

    불필요한 업데이트를 방지하는 방법

  18. 18

    JQ를 사용하여 JSON에서 불필요한 항목을 제거하는 방법은 무엇입니까?

  19. 19

    React에서 불필요한 다시 렌더링을 피하는 방법은 무엇입니까?

  20. 20

    자바에서 불필요한 언 박싱-코드를 리팩터링하는 방법?

  21. 21

    sympy에서 불필요한 괄호를 비활성화하는 방법은 무엇입니까?

  22. 22

    핵심 데이터에서 불필요한 데이터를 제거하는 효율적인 방법

  23. 23

    불필요한 GET을 피하고 서블릿을 통해 파일을 얻는 방법은 무엇입니까?

  24. 24

    JavaFX에서 요소별로 루프를 실행하는 방법

  25. 25

    루프에서 목록 요소를 삭제하는 방법

  26. 26

    Android 프로젝트의 'libs'폴더에서 불필요한 jar를 제거하는 간단한 방법이 있습니까?

  27. 27

    Android 프로젝트의 'libs'폴더에서 불필요한 jar를 제거하는 간단한 방법이 있습니까?

  28. 28

    Pyspark에서 for 루프 또는 에피소드를 작성하는 방법

  29. 29

    ~ / .bashrc에서 무한 루프를 제거하는 방법?

뜨겁다태그

보관