Tôi nhận thấy rằng một vài gói cho phép bạn chuyển các tên biểu tượng có thể không hợp lệ trong ngữ cảnh mà hàm được gọi. Tôi tự hỏi làm thế nào điều này hoạt động và làm thế nào tôi có thể sử dụng nó trong mã của riêng tôi?Chuyển tên biến thành hàm trong R
Dưới đây là một ví dụ với ggplot2:
a <- data.frame(x=1:10,y=1:10)
library(ggplot2)
qplot(data=a,x=x,y=y)
x
và y
không tồn tại trong không gian tên của tôi, nhưng ggplot hiểu rằng họ là một phần của khung dữ liệu và trì hoãn việc đánh giá của họ vào một bối cảnh trong đó họ có giá trị. Tôi đã cố gắng làm điều tương tự:
b <- function(data,name) { within(data,print(name)) }
b(a,x)
Tuy nhiên, điều này thất bại thảm hại:
Error in print(name) : object 'x' not found
Tôi đang làm gì sai? Cái này hoạt động ra sao?
Note: đây là không một bản sao của Pass variable name to a function in r
Bạn có thể chi tiết hơn một chút (thêm một vài bình luận) không? Cách tiếp cận này nghe có vẻ thú vị. Lưu ý rằng không có "chủ đề cũ" trên ngăn xếp tràn, thông tin được lưu giữ cho những người như bạn và tôi, những người google câu hỏi của họ. –
@static_rtti Tôi đã cập nhật câu trả lời. HTH –
Đây là một viên ngọc của một câu trả lời, cảm ơn bạn. Nếu nó giúp, thì nếu 'var <- eval (thay thế (var), dữ liệu)' cung cấp cho bạn đối tượng, thì 'var.name <- replace (var)' cung cấp cho bạn tên biến được truyền để sử dụng trong hàm. – drstevok