2016-10-30 16 views
21

định nghĩa hàmSửa chức năng trong R sử dụng cơ thể, formals và phương pháp môi trường

f <- function(x) { 
    x + x*x 
} 

3 phương pháp tức là body, formalsenvironment có thể được sử dụng để sửa đổi

cơ thể

> body(f) 
{ 
    x + x * x 
} 

Nếu chúng ta muốn thay đổi e phần thân bằng cách sử dụng body

> body(f) <- expression({x*x*x}) 
> f 
function (x) 
{ 
    x * x * x 
} 

xem nó đã thay đổi.

formals

Nếu muốn thay đổi các tham số sử dụng formals để (x = 3, y = 6)

> formals(f) <- list(x = 3, y = 4) 
> f 
function (x = 3, y = 4) 
{ 
    x * x * x 
} 

xem thay đổi của nó.

Nhưng nếu muốn thay đổi đối số thành (x, y) thay thế. Rõ ràng formals(f) <- list(x, y) sẽ không hoạt động.

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

21

Bạn cần phải sử dụng alist:

formals(f) = alist(x =, y =) 

alist xây dựng một danh sách từ lập luận unevaluated của nó.

+0

Vì lý do nào đó nhận xét trước của tôi đã bị xóa nhưng tôi sẽ * thực sự quan tâm * nếu ai đó có thể chỉ cho tôi lỗi/thiếu sót trong câu trả lời của tôi. –

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