Функция R with() и inside() — все, что вам нужно знать!
Здравствуйте, читатели! В этой статье мы подробно рассмотрим две тесно связанные, но разные функции программирования R — функцию R with() и внутри(). Итак, давайте быть!! :)
1. Функция R с()
Мы часто сталкиваемся с ситуациями, когда мы чувствуем необходимость создавать настраиваемые/определяемые пользователем функции для выполнения определенной операции. С помощью функции R with() мы можем работать с выражениями R, а также с процессом вызова этой функции за один раз!
То есть функция with()
позволяет нам оценить выражение R внутри функции, которая будет передана в качестве аргумента. Он работает только с фреймами данных. Вот почему результат оценки выражения R выполняется относительно фрейма данных, переданного ему в качестве аргумента.
Синтаксис:
with(data-frame, R expression)
Пример:
rm(list = ls())
Num <- c(100,100,100,100,100)
Cost <- c(1200,1300,1400,1500,1600)
data_A <- data.frame(Num,Cost,stringsAsFactors = FALSE)
with(data_A, Num*Cost)
with(data_A, Cost/Num)
В приведенном выше примере мы вычислили выражение «Num*Cost» для фрейма данных data_A непосредственно в функции with().
После этого мы также вычислили выражение «Стоимость/Число» внутри функции.
Причина, по которой эти два оператора расположены один за другим, состоит в том, чтобы подчеркнуть, что функция with() не изменяет исходный фрейм данных любой ценой. Он дает вывод отдельно для каждого значения, связанного со столбцами фрейма данных.
Выход:
> with(data_A, Num*Cost)
[1] 120000 130000 140000 150000 160000
> with(data_A, Cost/Num)
[1] 12 13 14 15 16
2. Функция R внутри()
Прочитав о функции with(), теперь давайте сосредоточимся на ее близнеце! Ха-ха! Просто шутка! Хотя названия функций звучат одинаково, они различаются по принципу действия.
R within() function
вычисляет результат выражения внутри себя, но с небольшой разницей. Это позволяет нам создать копию фрейма данных и добавить столбец, в котором в конечном итоге будет храниться результат выражения R.
Синтаксис:
within(data frame, new-column <- R expression)
Пример:
rm(list = ls())
Num <- c(100,100,100,100,100)
Cost <- c(1200,1300,1400,1500,1600)
data_A <- data.frame(Num,Cost,stringsAsFactors = FALSE)
within(data_A, Product <- Num*Cost)
within(data_A, Q <- Cost/Num)
Здесь мы выполнили вычисление тех же выражений, которые использовали для функции with(). Но здесь мы создали новый столбец для хранения результата выражения.
> within(data_A, Product <- Num*Cost)
Num Cost Product
1 100 1200 120000
2 100 1300 130000
3 100 1400 140000
4 100 1500 150000
5 100 1600 160000
> within(data_A, Q <- Cost/Num)
Num Cost Q
1 100 1200 12
2 100 1300 13
3 100 1400 14
4 100 1500 15
5 100 1600 16
Заключение
На этом мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если вы столкнетесь с любым вопросом.
Следите за новостями, чтобы узнать больше о таких сообщениях, связанных с R, а пока удачного обучения! :)