2011-06-22 38 views
5

Làm cách nào để đánh giá c[,2] thông qua cuộc gọi đến z?Tham chiếu biến tiềm ẩn trong R

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

eval(z) không hoạt động.

+0

Bạn đang cố gắng làm gì? Phân tích chuỗi tùy ý không có khả năng là câu trả lời đúng. – hadley

+0

Liên quan: [Biểu thức đánh giá R] (http://stackoverflow.com/q/1743698/2157640) – Palec

Trả lời

5

Nó có thể là dưới đây:

eval(parse(text=z)) 
+3

'yêu cầu (vận may); tài sản (106) ' –

2

Nếu bạn thực sự cần phải tự động lắp ráp một lời gọi hàm và sau đó đánh giá nó, do.call thường là tốt hơn nhiều (và hiệu quả hơn). Đó là một chút khó khăn để vượt qua các tham số mất tích mặc dù, nhưng TRUE cũng làm việc trong trường hợp này:

z <- c[TRUE,2] 

tương đương với:

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

Nhưng đây là một hack để có được những biểu tượng mất tích, mà có thể sau đó được sử dụng:

m <- quote(f(,))[[2]] # The elusive missing symbol 
z <- do.call('[', alist(c, m, 2)) 
Các vấn đề liên quan