2011-12-20 25 views
10

Tôi muốn viết một hàm lấy một khung dữ liệu và vẽ tất cả các cột trong khung dữ liệu đó dưới dạng biểu đồ.Làm thế nào để chuyển đổi tên cột dataframe từ chuỗi thành các đối số thích hợp cho (qplot, ggplot2)?

Đối với một dataframe có tên cột tôi biết trước, tôi có thể viết

qplot(colname1, data=df, geom='histogram') 
qplot(colname2, data=df, geom='histogram') 
... 

nhưng tôi muốn làm điều này quát, vì vậy mà tôi có thể sử dụng tên của các cột như là một chuỗi "colname1".

Nói cách khác, làm thế nào để viết

plot_histogram_of_column <- function(df, colname) { 
    # qplot(colname, data=df, geom='histogram') won't work 
} 

Trả lời

20

Sử dụng ggplotaes_string. Một cái gì đó như thế này:

ggplot(data = df, aes_string(x = colname)) + geom_histogram() 

aes_string được viết chính xác cho mục đích này.

+2

Như được nêu tại đây: http://had.co.nz/ggplot2/aes.html Lưu ý, tuy nhiên, theo như tôi có thể nói, KHÔNG có trang nào của trang web tài liệu ggplot2 liên kết đến điều này, vì vậy cách duy nhất để tìm ra nó là bằng cách biết tìm kiếm nó. –

+0

@ Maxy-B Tài liệu dựng sẵn ('? Aes') được cải thiện nhiều trong phiên bản 0.9.0 và chứa liên kết tới trang trợ giúp cho' aes_string'. Tôi không thể nhớ nếu đây là trường hợp trong 8.9.0. – joran

+0

Có. Tôi chỉ giải quyết vấn đề của riêng mình liên quan đến vấn đề này. Chức năng này vô cùng mơ hồ và khó phát hiện, nhưng quan trọng. Chắc chắn một trong những điều đầu tiên bạn muốn tham số hóa khi vẽ một tập dữ liệu lớn là danh tính của chuỗi y, nhưng các ví dụ không nhấn mạnh điều này. (Tôi đã chỉnh sửa tiêu đề của bạn để rõ ràng) – smci

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