2013-09-25 15 views

Odpowiedz

22

Jeśli chcesz ocenić wyrażenie w kontekście tematyce ramka danych, możesz użyć with i within.

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

lub

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

Lub, jeśli wyrażenie jest w postaci ciągu tekstowego (należy sprawdzić, czy istnieją inne sposoby, aby napisać kod, oceny dowolne ciągi tekstowe mogą prowadzić do wielu problemów):

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

Dziękuję bardzo. aa $ z <- eval (parse (text = "x + y - 2"), aa) ten kod działał poprawnie. Tutaj możemy podać nazwę zmiennej, która zawiera formułę. – Punith

6

należy prawdopodobnie przeczytać kilka podstawowych tutoriali na R inne niż An Introduction to R jak mimo tego, co jest tam napisane notacja $ jest bardziej sensowne i łatwiejsze do zrozumienia niż attach/detach . Spróbuj tego w międzyczasie.

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

Co daje:

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

Następnie wprowadź:

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

Co daje:

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

Tak, proszę pana, to wiem. Ale nie przyjmie formuły z innej zmiennej. – Punith

+0

Ah, przeprosiny, nieporozumienie z mojej strony - wtedy "eval" jak na drugą odpowiedź jest rzeczywiście tym, czego chcesz. – SlowLearner

+0

nie proś o przeprosiny. dajesz mi sugestię ... Dziękuję za odpowiedź ... – Punith

3

można użyć mutate z pakietu dplyr

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

Mam nadzieję, że to pomaga.

Powiązane problemy