R의 함수 또는 연산이 벡터화되었는지 어떻게 알 수 있습니까?

Anon Mousy

나는 아직도 배우고있다 R. R operation또는 a 인지 식별하는 자동화 된 방법 functionvectorized있습니까? 경우 확인하려면 R객체가이다 vector, 내가 사용할 수 있습니다 is.vector(x), 어떤 수익을 TRUE경우 x벡터 또는 False그렇지. 비슷한 것이 vectorized있습니까?

예를 들면 :

x <- c(1,2,3)
y <- c(3,4,5)
x+y
#[1] 4 6 8

이후 +벡터화, 그것은 자동 adds벡터의 개별 요소 x의 각각의 요소 y. 그렇지 않으면 for유사한 출력을 얻기 위해 루프를 사용해야합니다 .

for(i in seq_along(x)){
  cat(sprintf("%i ", x[i]+y[i]))
}
#4 6 8 

지금까지 용어에 대한 나의 제한된 이해 Vectorized는 벡터의 개별 요소에 대해 하나씩 수행해야하는 요소에 대한 자동 작업을 수반합니다.

당신이 경우 식별하는 데 사용하는 것이 좋습니다하는 방법이있다 operationfunction에가 R있다가 vectorized?

감사합니다.

Gersht

R의 벡터화는 기본적으로 모든 루핑이 C 또는 FORTRAN과 같은 더 빠르고 컴파일 된 언어로 이동됨을 의미합니다. 이를 위해 문제의 벡터는 "원자 적"이어야합니다. 즉, "평평하고"동종 typeof()이어야합니다.으로 확인할 수있는 벡터 유형 은 수행중인 작업에 적합해야합니다. 원자 적이면 벡터화됩니다.

을 사용하여 벡터가 원자인지 확인할 수 있습니다 is.atomic(). 벡터화 되지 않은 또 다른 유형의 벡터는 "재귀"라고하며을 사용하여 확인할 수 있습니다 is.recursive(). 재귀 객체는 모든 유형의 다른 객체를 포함 할 수 있습니다. 즉, 이질적 일 수 있습니다. 목록과 데이터 프레임은 재귀 적입니다.

원자 대 재귀에 대한 통찰력을 얻으려면 다음과 같이 시도하십시오.

# Atomic:
1
1:3
c("a", "b", "c")
c(T, F, T)

# Recursive:
list(nums = 1:3, letts = c("a", "b", "c"), logics = c(T, F, T))
data.frame(nums = 1:3, letts = c("a", "b", "c"), logics = c(T, F, T))

# Vectors can be atomic or recursive:
is.vector(1:9) # TRUE
is.atomic(1:9) # TRUE
is.recursive(1:9) # FALSE

is.vector(list(nums = 1:9, chars = "x")) # TRUE
is.atomic(list(1:9)) # FALSE
is.recursive(list(1:9)) # TRUE

# Matrices are atomic, data frames are recursive:
is.vector(matrix(1:9, 3)) # FALSE
is.atomic(matrix(1:9, 3)) # TRUE
is.recursive(matrix(1:9, 3)) # FALSE

is.vector(as.data.frame(matrix(1:9, 3))) # FALSE
is.atomic(as.data.frame(matrix(1:9, 3))) # FALSE
is.recursive(as.data.frame(matrix(1:9, 3))) # TRUE

가장 자주 사용하는 R 함수 중 대부분은 아니지만 많은 것이 벡터화되었다고 가정 할 수 있습니다. 문서 나 함수 내부를 보는 것 외에는 이것을 확인할 방법이 없다고 생각합니다. 간단한 요소 별 연산을 수행하기 위해 for 루프를 작성하는 것에 대해 생각할 때마다 벡터화를 사용하여 수행하는 방법에 대해 생각하십시오. 충분한 연습을하면 그것은 당신에게 제 2의 천성이 될 것입니다. 자세한 내용 은 Noam Ross 의이 블로그 게시물추천 할 수 있습니다 .

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JQuery 함수에서 Bootstrap Modal의 특정 버튼이 클릭되었는지 어떻게 알 수 있습니까?

분류에서Dev

AMD CPU의 SME 기능이 활성화되었는지 어떻게 알 수 있습니까?

분류에서Dev

클립 보드의 데이터를 사용할 준비가되었는지 어떻게 알 수 있습니까?

분류에서Dev

조각이 활성화되어 있는지 또는 보이는지 어떻게 알 수 있습니까?

분류에서Dev

Flutter 위젯의 높이는 어떻게 알 수 있습니까?

분류에서Dev

호출자는 같은 이름의 멤버 함수가 호출되는지 어떻게 알 수 있습니까?

분류에서Dev

ArrayList에 mongoDB의 특정 항목이 포함되어 있는지 어떻게 알 수 있습니까?

분류에서Dev

목록에 Python의 다른 목록이 포함되어 있는지 어떻게 알 수 있습니까?

분류에서Dev

변수가 정의되었는지 어떻게 알 수 있습니까?

분류에서Dev

SATA 2 또는 SATA 3이 있는지 어떻게 알 수 있습니까?

분류에서Dev

어떤 버튼이 클릭되었는지 어떻게 알 수 있습니까?

분류에서Dev

어떤 방법이 적용되었는지 어떻게 알 수 있습니까?

분류에서Dev

어떤 항목이 클릭되었는지 어떻게 알 수 있습니까?

분류에서Dev

어떤 항목이 선택되었는지 어떻게 알 수 있습니까?

분류에서Dev

표준 출력으로의 노드 파이프-배수되었는지 어떻게 알 수 있습니까?

분류에서Dev

랩톱이 bash 또는 python 스크립트로 이동되었는지 어떻게 든 알 수 있습니까?

분류에서Dev

arraylist의 Java jbutton, 어느 것이 클릭되었는지 어떻게 알 수 있습니까?

분류에서Dev

GMSPolyline의 어떤 부분이 탭되었는지 어떻게 알 수 있습니까?

분류에서Dev

함수가 문자열 또는 바이트를 반환하는지 어떻게 알 수 있습니까?

분류에서Dev

TBB 링커 오류 포함이 누락되었는지 또는 코드가 오래되었는지 어떻게 알 수 있습니까?

분류에서Dev

작업이 시간 초과 또는 수동 트리거에 의해 취소되었는지 어떻게 알 수 있습니까?

분류에서Dev

sessionToken이 제대로 구현되었는지 어떻게 알 수 있습니까?

분류에서Dev

탭이 언제 전환되었는지 어떻게 알 수 있습니까?

분류에서Dev

활동이 생성되었는지 어떻게 알 수 있습니까?

분류에서Dev

~ / .XCompose 파일이로드되었는지 어떻게 알 수 있습니까?

분류에서Dev

글꼴이 언제 설치되었는지 어떻게 알 수 있습니까?

분류에서Dev

파일이 언제 압축되었는지 어떻게 알 수 있습니까?

분류에서Dev

인쇄 작업이 취소되었는지 어떻게 알 수 있습니까?

분류에서Dev

ClearCase : LABEL이 언제 생성되었는지 어떻게 알 수 있습니까?

Related 관련 기사

  1. 1

    JQuery 함수에서 Bootstrap Modal의 특정 버튼이 클릭되었는지 어떻게 알 수 있습니까?

  2. 2

    AMD CPU의 SME 기능이 활성화되었는지 어떻게 알 수 있습니까?

  3. 3

    클립 보드의 데이터를 사용할 준비가되었는지 어떻게 알 수 있습니까?

  4. 4

    조각이 활성화되어 있는지 또는 보이는지 어떻게 알 수 있습니까?

  5. 5

    Flutter 위젯의 높이는 어떻게 알 수 있습니까?

  6. 6

    호출자는 같은 이름의 멤버 함수가 호출되는지 어떻게 알 수 있습니까?

  7. 7

    ArrayList에 mongoDB의 특정 항목이 포함되어 있는지 어떻게 알 수 있습니까?

  8. 8

    목록에 Python의 다른 목록이 포함되어 있는지 어떻게 알 수 있습니까?

  9. 9

    변수가 정의되었는지 어떻게 알 수 있습니까?

  10. 10

    SATA 2 또는 SATA 3이 있는지 어떻게 알 수 있습니까?

  11. 11

    어떤 버튼이 클릭되었는지 어떻게 알 수 있습니까?

  12. 12

    어떤 방법이 적용되었는지 어떻게 알 수 있습니까?

  13. 13

    어떤 항목이 클릭되었는지 어떻게 알 수 있습니까?

  14. 14

    어떤 항목이 선택되었는지 어떻게 알 수 있습니까?

  15. 15

    표준 출력으로의 노드 파이프-배수되었는지 어떻게 알 수 있습니까?

  16. 16

    랩톱이 bash 또는 python 스크립트로 이동되었는지 어떻게 든 알 수 있습니까?

  17. 17

    arraylist의 Java jbutton, 어느 것이 클릭되었는지 어떻게 알 수 있습니까?

  18. 18

    GMSPolyline의 어떤 부분이 탭되었는지 어떻게 알 수 있습니까?

  19. 19

    함수가 문자열 또는 바이트를 반환하는지 어떻게 알 수 있습니까?

  20. 20

    TBB 링커 오류 포함이 누락되었는지 또는 코드가 오래되었는지 어떻게 알 수 있습니까?

  21. 21

    작업이 시간 초과 또는 수동 트리거에 의해 취소되었는지 어떻게 알 수 있습니까?

  22. 22

    sessionToken이 제대로 구현되었는지 어떻게 알 수 있습니까?

  23. 23

    탭이 언제 전환되었는지 어떻게 알 수 있습니까?

  24. 24

    활동이 생성되었는지 어떻게 알 수 있습니까?

  25. 25

    ~ / .XCompose 파일이로드되었는지 어떻게 알 수 있습니까?

  26. 26

    글꼴이 언제 설치되었는지 어떻게 알 수 있습니까?

  27. 27

    파일이 언제 압축되었는지 어떻게 알 수 있습니까?

  28. 28

    인쇄 작업이 취소되었는지 어떻게 알 수 있습니까?

  29. 29

    ClearCase : LABEL이 언제 생성되었는지 어떻게 알 수 있습니까?

뜨겁다태그

보관