Видео: КАНЦЕРОГЕННОСТЬ МЯСА. Полный разбор аргументов ВОЗ. МЯСО ВРЕДНЕЕ КУРЕНИЯ!? 2024
Каждый раз вы объединяете вектор с несколькими значениями и один с одним значением в функции. R применяет эту функцию, используя это единственное значение для каждого значения в векторе. Но рециркуляция выходит далеко за рамки этих примеров.
Каждый раз, когда вы передаете два вектора с неравной длиной в функцию рециркуляции, R повторяет кратчайший вектор так часто, как это необходимо, чтобы выполнить задачу, которую вы попросили выполнить.
Предположим, вы разделили количество корзин, которые бабушка была сделана в два указателя и три указателя: >> Бабушка. указатели <- c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)
Вы упорядочиваете номера таким образом, чтобы для каждой игры сначала было два задаются указатели, а затем количество трех указателей.
Теперь бабушка хочет узнать, сколько очков она на самом деле забил в этом сезоне. Вы можете легко вычислить это с помощью утилизации:
Вы создали вектор с количеством точек для каждой корзины:
c (2, 3)
-
Вы сказали R умножить этот вектор на векторную бабушку. указатели
.
-
R умножило первое число в бабушке. указатели на 2, второй на 3, третий на 2 и т. д. Вы помещаете результат в переменные точки.
-
Вы суммировали все числа в очках, чтобы получить общее количество очков.
Фактически, вы можете просто отказаться от шага 3. Вложение функций позволяет вам сделать это в одной строке кода: >> sum (бабушки. Указатели * c (2, 3)) -
Утилизация может быть немного сложнее. Если длина более длинного вектора не является точно кратной длине более короткого вектора, вы можете получить неожиданные результаты.
Теперь бабушка хочет знать, насколько она улучшила каждую игру. Быть ленивым, у вас есть хитрый план. С diff () вы подсчитываете, сколько еще или меньше корзин, сделанных бабушкой, чем она делала в игре раньше. Затем вы используете векторное разделение, чтобы разделить эти различия на количество корзин в игре. Для этого вы умножаетесь на 100 и округляете весь вектор. Все эти вычисления берут одну строку кода: >> round (diff (корзины. Бабушки) / корзины. Of. Granny * 100) 1st 2nd 3rd 3rd 4th 5th 5th-6 -67 25 20 50 -67 -267
Это последнее значение выглядит не так, потому что невозможно набрать на 100% меньше корзин. R не просто дает вам этот странный результат; он также предупреждает вас, что длина diff (корзины бабушки) не соответствует длине корзин. из. Бабушка:
Предупреждающее сообщение: В diff (корзины. Бабушки) / корзины.из. Бабушка: длина длинного объекта не кратна короткой длине объекта
Векторные корзины. из. Бабушка имеет шесть значений, но результат diff (корзины бабушки) составляет всего пять значений. Таким образом, снижение на 267 процентов - это, по сути, последнее значение корзин. из. Бабушка делится на первое значение diff (корзины бабушки). В этом примере кратчайший вектор diff (baskets. Of. Granny) получает рециркуляцию оператором деления.
Этот результат не был тем, что вы намеревались. Чтобы предотвратить этот результат, вы должны использовать только первые пять значений корзин. из. Бабушка, поэтому длина обоих векторов соответствует: >> round (diff (корзины. Бабушки) / корзины. Бабушки [1: 5] * 100) 2-й 3-й 4-й 5-й 6-й-67 25 20 50 -67
И все это векторизация.