비디오: r/Rareinsults | YOU LOOK LIKE A THUMB 2024
벡터는 여러 값과 함수의 단일 값을 결합합니다. R은 벡터의 모든 값에 대해 단일 값을 사용하여 함수를 적용합니다. 그러나 재활용은 이러한 예를 훨씬 뛰어 넘습니다.
재활용 함수에 길이가 다른 두 개의 벡터를 줄 때마다 R은 수행 할 작업을 수행하는 데 필요한만큼 가장 짧은 벡터를 반복합니다.
> Granny로 나눈다고 가정 해보십시오. 포인터를 <- c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)각 게임마다 첫 번째 숫자 -pointers가 주어지고, 그 다음에 3 개 포인터의 수가옵니다.
할머니는 이번 시즌에 실제로 얼마나 많은 점수를 얻었는지 알고 싶어합니다. 재활용을 통해 쉽게 계산할 수 있습니다.
> 9 포인트 >> [1] 20 6 8 0 8 3 8 6 14 6 2 6> 합계 (점수) [1] 87
자, 여기서 뭐 했니?
각 바구니에 대해 점의 수를 가진 벡터를 만들었습니다:c (2, 3)
R에게 그 벡터에 Granny라는 벡터를 곱해달라고했습니다. 포인터
-
. Granny의 첫 번째 숫자에 R이 곱해졌습니다. 포인터 2 개, 두 번째 포인터 3 개, 세 번째 포인터 2 개, 등등.
결과를 변수 점에 넣습니다.
-
함수를 중첩하면 코드의 한 줄에서이 작업을 수행 할 수 있습니다: >> sum (할머니. 포인터 * c (2, 3))
-
약간 까다로울 수 있습니다. 더 긴 벡터의 길이가 더 짧은 벡터의 길이의 배수가 아니라면 예기치 않은 결과가 발생할 수 있습니다.
이제 할머니는 모든 게임을 얼마나 개선했는지 알고 싶어합니다. 게으르다는 교활한 계획이 있습니다. diff ()를 사용하면 할머니가 게임에서 만든 것보다 몇 개나 더 적은 바구니를 계산할 수 있습니다. 그런 다음 벡터화 된 나누기를 사용하여이 차이를 게임의 바구니 수로 나눕니다. 그만큼 100을 곱하고 전체 벡터를 반올림합니다. 이 계산은 모두 한 줄의 코드를 사용합니다: >> round (diffun (granny의 바구니) / Granny * 100) 1st 2nd 3th 4th 5th 6th -67 25 20 50-67 -267 -
마지막 값은 제대로 보이지 않습니다. 왜냐하면 바구니의 수를 100 % 줄이는 것은 불가능하기 때문입니다. R은 이상한 결과를주지는 않습니다. 그것은 또한 diff의 길이 (할머니의 바구니)가 바구니의 길이에 맞지 않는다고 경고합니다. 의. Granny:
경고 메시지: diff (바구니의. Granny) / 바구니.의. 할머니: 객체 길이가 길면 객체 길이의 배수가 아닙니다.
벡터 바구니입니다. 의. 할머니는 6 개의 값이 길지만 diff (바구니의. 할머니)의 결과는 5 개의 값입니다. 따라서 267 퍼센트의 감소는 사실 바구니의 마지막 가치입니다. 의. 할머니를 diff의 첫 번째 값으로 나눕니다 (할머니의 바구니). 이 예제에서 가장 짧은 벡터 diff (바구니의 Granny)는 나누기 연산자에 의해 재활용됩니다.
그 결과는 당신이 의도 한 것이 아닙니다. 그 결과를 막으려면 바구니의 처음 5 개 값만 사용해야합니다. 의. 할머니, 그래서 두 벡터의 길이는 일치합니다: >> round (diff (바구니의 할머니) / 바구니 Granny [1: 5] * 100) 2nd 3rd 3rd 4th 5th 6th -67 25 20 50 -67
모든 것이 벡터화입니다.