2013-08-15 45 views
5

Tôi đã đọc các Chức năng từ github. Một gợi ý trong trang là sử dụng call_function nếu một trong những hoạt động với một danh sách các chức năng. Đây là đoạn mã từ trang:lập trình chức năng trong R

call_fun <- function(f, ...) f(...) 
f <- list(sum, mean, median, sd) 
lapply(f, call_fun, x = runif(1e3)) 

Sản lượng đã được đăng như:

# [[1]] 
# [1] 498 
# 
# [[2]] 
# [1] 0.498 
# 
# [[3]] 
# [1] 0.49 
# 
# [[4]] 
# [1] 0.29 

Tuy nhiên, tôi đã không thể tái tạo những kết quả trên. Tôi gặp lỗi:

Error in FUN(X[[4L]], ...) : could not find function "f" 

Tôi có thiếu gì đó ở đây không?

Trả lời

5

Bạn đã xác định lại chức năng sd:

sd = 2 

call_fun <- function(f, ...) f(...) 
f <- list(sum, mean, median, sd) 
lapply(f, call_fun, x = runif(1e3)) 
#Error in FUN(X[[4L]], ...) : could not find function "f" 

Khởi động lại phiên của bạn hoặc làm rm(sd).

+0

Cảm ơn @eddi. Tôi không chắc liệu câu hỏi của tôi sẽ hữu ích cho người dùng trong tương lai hay không. Tôi sẽ rất vui khi xóa nếu nó có vẻ tầm thường. – Metrics

+3

Tôi không chắc chắn rằng bạn _can_ xóa nó. Nó đã có một upvote (tôi) và upvotes trên câu trả lời (tôi và anothers). Tôi vẫn tò mò nếu có một cách lập trình để xử lý vấn đề. Tôi đã thử 'call_fun <- function (f, ...) match.fun (f) (...)' mà thành công trong trường hợp đơn giản và thất bại trong cùng một cách với 'sd == 5' trong môi trường. –

+1

@Metrics Tôi đã gặp phải vấn đề tương tự trước đây với 'sd' (chỉ có quá nhiều tên biến hai ký tự), vì vậy có lẽ không quá sai lầm (không chắc chắn rằng bạn có thể tìm câu hỏi này thông qua công cụ tìm kiếm) – eddi

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