Hãy thử bquote()
, ví dụ:
set.seed(1)
vall <- format(rnorm(1),digits=3)
eq <- bquote(bold(R^2 == .(vall)))
sq <- seq(0, 1, by = 0.1)
plot(sq, sq, type = "n")
text(0.5, 0.5, eq)
Lý do ví dụ của bạn không hoạt động là R không bao giờ kết thúc đánh giá vall
:
> eq2 <- expression(paste(R^2," = ",vall,sep=""))
> eq2
expression(paste(R^2, " = ", vall, sep = ""))
âm mưu cố gắng thực hiện một điều gì đó nhưng về cơ bản, thực tế là vall
.
Nói chung, bạn không cần paste()
trong biểu thức cốt truyện, bạn có thể tạo biểu thức bằng cách sử dụng toán tử chuẩn và thông qua việc sử dụng toán tử bố cục. Ví dụ, đối với một biểu thức tương đương với một ví dụ của bạn sản xuất (unevaluated vall
), tất cả các bạn thực sự cần là:
expression(R^2 == vall)
bquote()
là một cách để có một đối tượng thay thế bởi giá trị của nó trong một biểu thức. Bạn quấn đối tượng bạn muốn thay thế bằng giá trị của nó trong .()
. R sau đó sẽ tìm đối tượng và lấy giá trị của nó và chèn nó vào biểu thức.
Xem thêm substitute()
để biết cách tiếp cận khác với giao diện khác này.
Nguồn
2012-12-28 18:54:33
trùng lặp? http://stackoverflow.com/questions/4973898/combining-paste-and-expression-functions-in-plot-labels –
Tôi không nghĩ rằng đây là một bản sao nhưng tiêu đề của bài đăng này là một chút sai lầm. Tôi có thể đề nghị định dạng lại tiêu đề để phản ánh vấn đề khi số mũ thực sự dường như không phải là vấn đề của bạn hay không. –
'sep =" "' không có gì ở đây (gắn thêm một chuỗi rỗng). Đây không phải là 'base :: paste' mà là' plotmath'. Sẽ không bị tổn thương ở đây, nhưng sẽ không làm những gì bạn muốn nếu một chuỗi không rỗng được chỉ định. –