Tôi muốn cung cấp một biến tùy chọn cho hàm, cho phép các hàm kiểm tra xem đối số này có được cung cấp hay không tính toán. Tôi nghĩ tôi có thể sử dụng toán tử '...' cho điều đó.R: Tìm các biến được cung cấp cho các hàm có đối số '...' với tồn tại()
Ví dụ đơn giản nhất tôi có thể nghĩ đến (mà buồn bã thất bại) là thế này:
monkeyfun = function(...){
if (exists("monkey")){
return('monkey found')
} else {
return('monkey not found')
}
}
Bây giờ monkeyfun(monkey=0)
cũng như monkeyfun()
cả trở "monkey not found"
.
Để kiểm tra tính chính xác, xác định monkey = 1
bên ngoài chức năng hoạt động và trả về "monkey found"
.
Tài liệu về đối số '...'
không thực sự giúp tôi hiểu vấn đề này và tôi không thể tìm thấy công thức cho câu hỏi này cho kết quả phù hợp ở đây (tôi hiểu câu hỏi này là cơ bản và có thể thảo luận ở đâu đó) ...
Tôi thực sự đánh giá cao một số trợ giúp về vấn đề này.
rõ ràng là lựa chọn tốt nhất – BrodieG
Tôi đã chơi xung quanh với 'hasArg()' chỉ bây giờ ... nó cho thấy hành vi bất ngờ sau đây mặc dù ... có chức năng sau đây: 'tfun = function (x = 0) {if (hasArg (name = 'x')) {print ('found')}} ' Nếu tôi chạy nó mà không cung cấp' x' (mặc dù nó sẽ kích hoạt mặc định), nó không cho tôi biết '' tìm thấy "'. – Affaeng
@Affaeng: tại sao điều đó bất ngờ? Nếu bạn gọi 'tfun()' không có đối số, thì không có đối số 'x' trong cuộc gọi. Vì vậy, 'hasArg (" x ")' khá chính xác trả về 'FALSE'. Nó không liên quan là 'x' là một đối số chính thức cho' tfun'. Như đã đề cập trong phần * Xem thêm * với '? HasArg', bạn có thể muốn đọc'? Missing'. –