Создание нового столбца в кадре данных с использованием формулы из другой переменной

Я хочу создать новый столбец для фрейма данных, используя формулу из другой переменной.
Пример:
У меня есть набор данных "aa";

x    y 
2    3 
4    5 
6    7 

Мой код R;

>bb <- "x+y-2" 
>attach(aa) 
>aa$z<- bb 
>detach(aa) 

результат;

x  y  z 
2  3  x+y-2 
4  5  x+y-2 
6  7  x+y-2 

но я хочу, как это;

x  y  z 
2  3  3 
4  5  7 
6  7  11 

Не могли бы вы помочь мне..

Ответы

Ответ 1

Если вы хотите оценить выражение в контексте фрейма данных, вы можете использовать with и within.

aa$z <- with(aa, x + y - 2)

или

aa <- within(aa, z <- x + y - 2)

Или, если ваше выражение представлено в виде текстовой строки (вы должны увидеть, есть ли другие способы написания кода, оценка произвольных текстовых строк может привести к множеству проблем):

aa$z <- eval(parse(text="x + y - 2"), aa)

Ответ 2

Вероятно, вы должны прочитать некоторые базовые руководства по R, отличные от Введение в R, несмотря на то, что там написано нотация $ более разумна и понятна чем attach/detach. Попробуйте это тем временем.

aa <- data.frame(x = c(2, 4, 6), y = c(3, 5, 7))

Что дает:

> aa
  x y
1 2 3
2 4 5
3 6 7

Затем введите:

aa$z <- (aa$x + aa$y) - 2

Что дает:

> aa
  x y  z
1 2 3  3
2 4 5  7
3 6 7 11

Ответ 3

вы можете использовать mutate из пакета dplyr

library(dplyr)
aa <- aa %>% mutate(z = x+y-2)

Надеюсь, что это поможет.