2011-06-22 9 views
5

Jak mogę ocenić c[,2] przez połączenie z z?Niewłaściwe odniesienie do zmiennej w R

a <- c(1,2,3) 
b <- c(4,5,6) 
c <- cbind(a,b) 
z <- "c[,2]" 

eval(z) nie działa.

+0

Co próbujesz zrobić? Parsowanie arbitralnych ciągów jest mało prawdopodobne, aby była właściwą odpowiedzią. – hadley

+0

Powiązane: [R eval expression] (http://stackoverflow.com/q/1743698/2157640) – Palec

Odpowiedz

5

może być niższa niż:

eval(parse(text=z)) 
+3

'require (fortunes); fortuna (106) ' –

2

Jeśli naprawdę trzeba dynamicznie montażu wywołanie funkcji, a następnie oceniają go do.call jest zwykle znacznie lepsze (bardziej wydajne). To trochę trudno przekazać parametr brakuje chociaż, ale prawdziwe działa również w tym przypadku:

z <- c[TRUE,2] 

odpowiada:

z <- do.call('[', list(c, TRUE, 2)) 

Ale tu jest hack do zdobycia brakującego symbolu, który można następnie być używane:

m <- quote(f(,))[[2]] # The elusive missing symbol 
z <- do.call('[', alist(c, m, 2)) 
Powiązane problemy