2011-10-17 38 views
5

Hãy xem xét đoạn mã sau:Làm cách nào để chuyển/đánh giá các đối số hàm trong một hàm khác để sử dụng với ggplot?

test <- function(x,n){ 

selection<-names(x)[n] 
graph <- ggplot(x, aes(factor(selection))) 
graph + geom_bar() 
} 

test(mtcars,1) 

Nó ném một lỗi gây ra R không thể tìm thấy lựa chọn. Tôi cũng chơi xung quanh với substitute, evalget mà không thành công. Tôi tìm thấy this similar question và nghĩ rằng tôi hiểu câu trả lời Joris' nhưng không thể sử dụng cùng một mẹo cho các đối số của ggplot.

Trả lời

9

bạn có thể sử dụng aes_string cho mục đích này. Vì vậy, test phải như thế này:

test <- function(x,n){ 
    graph <- ggplot(x, aes_string(x = names(x)[n])) 
    graph + geom_bar() 
} 
+0

Cảm ơn koshke, tôi ước tôi sẽ không bỏ lỡ quá nhiều thủ đoạn nhỏ. Tuy nhiên, nó giúp một chút để hiểu làm thế nào ggplot được viết. –

Các vấn đề liên quan