2011-06-22 7 views
5

zを呼び出してどのように評価できますか?R内の暗黙の変数参照

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

eval(z)は機能しません。

+0

何をしようとしていますか?任意の文字列を解析することは正しい答えではありません。 – hadley

+0

関連:[評価式](http://stackoverflow.com/q/1743698/2157640) – Palec

答えて

5

これは、以下のことがあります

eval(parse(text=z)) 
+3

'require(fortunes);占い(106) ' –

2

あなた本当にdo.callは、一般的にはるかに良い(と、より効率的)で、動的関数呼び出しを組み立て、それを評価する必要がある場合。これは、しかし行方不明のパラメータを渡すために少し難しいですが、TRUEは、この場合にも動作します。その後、することができます不足しているシンボルを取得するためのハックを、

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

しかし、ここです:

z <- c[TRUE,2] 

に相当します使用する:

m <- quote(f(,))[[2]] # The elusive missing symbol 
z <- do.call('[', alist(c, m, 2)) 
関連する問題