비디오: r/Mildlyinfuriating | Gah! My candy! That's it -- this is going on Reddit. 2024
R에서 루프를 사용하는 것은 매우 편리하지만 루프를 반복하지 않으면보다 효율적인 코드를 작성할 수 있습니다. 가치를 넘어서서 지표를 넘었다. 이렇게하려면 함수의 중간 섹션을 다음 코드로 바꿉니다.
nclient <- 길이 (클라이언트) VAT <- seq_along (클라이언트)의 i에 대한 숫자 (nclient) {VAT [i] <- 루프에 대한 벡터 값을 사용하는 것과는 몇 가지 차이점이 있습니다:
-
그러면 숫자 벡터 VAT가 벡터 클라이언트와 정확히 일치합니다. 이것을 벡터의
-
사전 할당 이라고합니다. 그러면 seq_along () 함수를 사용하여 vector 자체가 아닌 클라이언트 인덱스를 반복합니다. 루프를 통과하는 첫 번째 패스에서 VAT의 첫 번째 값은 클라이언트의 첫 번째 값에 적용된 switch ()의 결과로 설정됩니다. 두 번째 단계에서 VAT의 두 번째 값은 클라이언트의 두 번째 값에 적용되는 switch ()의 결과입니다.
-
R에서 오브젝트를 늘릴 때마다 R은 오브젝트 전체를 복사하여 메모리의 새로운 위치로 이동해야합니다. 이것에는 두 가지 효과가 있습니다:
-
이것은
-
조각화,
라고 불리며 R과 메모리 사이의 통신이 원활하지 않게 만듭니다. 이전 예제와 같이 메모리를 미리 할당하여이 조각화를 피할 수 있습니다.