Функции with() и inside() в R можно использовать для вычисления некоторых выражений на основе фрейма данных.
Эти функции используют следующий синтаксис:
with(data, expression)
within(data, expression)
куда:
- data: имя фрейма данных
- выражение: выражение для оценки
Вот разница между двумя функциями:
- with() оценивает выражение без изменения исходного фрейма данных.
- Within() оценивает выражение и создает копию исходного фрейма данных.
В следующих примерах показано, как использовать каждую функцию на практике со следующим фреймом данных:
#create data frame
df <- data.frame(x=c(3, 5, 5, 7, 6, 10),
y=c(2, 2, 0, 5, 9, 4))
#view data frame
df
x y
1 3 2
2 5 2
3 5 0
4 7 5
5 6 9
6 10 4
Пример 1: Использование функции with()
Мы можем использовать следующую функцию with() для умножения значений между двумя столбцами во фрейме данных:
#multiply values between x and y
with(df, x\*y)
[1] 6 10 0 35 54 40
Значения из столбца x и столбца y во фрейме данных перемножаются, и в результате получается вектор длины 6.
Пример 2: Использование функции inside()
Мы можем использовать следующую функцию inside () , чтобы умножить значения между двумя столбцами во фрейме данных и присвоить результаты новому столбцу во фрейме данных:
#multiply values in x and y and assign results to new column z
within(df, z <- x\*y)
x y z
1 3 2 6
2 5 2 10
3 5 0 0
4 7 5 35
5 6 9 54
6 10 4 40
Результаты умножения теперь хранятся в новом столбце с именем z .
Важно отметить, что функция inside () создает копию исходного фрейма данных, но фактически не изменяет исходный фрейм данных:
#view original data frame
df
x y
1 3 2
2 5 2
3 5 0
4 7 5
5 6 9
6 10 4
Чтобы постоянно хранить результаты умножения, мы должны присвоить результаты новому фрейму данных:
#multiply values in x and y and assign results to new data frame
df_new <- within(df, z <- x\*y)
#view new data frame
df_new
x y z
1 3 2 6
2 5 2 10
3 5 0 0
4 7 5 35
5 6 9 54
6 10 4 40
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как добавить столбец во фрейм данных в R
Как добавить пустой столбец во фрейм данных в R
Как отсортировать фрейм данных по столбцу в R