Tôi có thể tìm tài liệu về cách sử dụng các ...hàm ở đâu? Ví dụ sẽ hữu ích.
Tôi có thể tìm tài liệu về cách sử dụng các ...hàm ở đâu? Ví dụ sẽ hữu ích.
Câu trả lời:
Từ được sử dụng để mô tả ...là "dấu chấm lửng." Biết được điều này sẽ giúp tìm kiếm thông tin về cấu trúc dễ dàng hơn. Ví dụ: lần truy cập đầu tiên trên Google là một câu hỏi khác trên trang web này: Làm thế nào để sử dụng tính năng dấu chấm lửng của R khi viết hàm của riêng bạn?
dots, ví dụ như các trang trợ giúp này được đặt tên ?dotsvà "tỉnh lược" thậm chí không được đề cập trên trang
?dotskhông hoạt động đối với tôi, nhưng ?'...'có.
Một ví dụ nhỏ để bạn bắt đầu.
f <- function(x, ...)
{
dots <- list(...) #1
if(length(dots) == 0) return(NULL)
cat("The arguments in ... are\n")
print(dots)
f(...) #2
}
f(1,2,3,"a", list("monkey"))
Hàm flưu trữ tất cả trừ đối số đầu vào đầu tiên trong biến dấu chấm lửng. Để truy cập nội dung của nó, dễ nhất là chuyển nó thành danh sách (1). Tuy nhiên, việc sử dụng chính là để truyền các đối số cho các hàm con, không yêu cầu chuyển đổi (2).
f()được gọi nhiều lần với các đối số khác nhau mỗi lần. Chạy mã và xem liệu bạn có thể hiểu điều gì đang xảy ra hay không.
...length()cũng
Bạn nên xem phần "Định nghĩa ngôn ngữ R", phần 2.1.9 Dấu chấm-chấm-chấm . Nó đi kèm với cài đặt R. Chạy help.start()trong một phiên tương tác để đưa ra trợ giúp HTML và nhấp vào liên kết Định nghĩa ngôn ngữ R. Bạn cũng có thể sử dụng phiên bản PDF hoặc HTML từ trang web chính.
Dù sao, ...được sử dụng để so khớp các đối số chính thức không xác định của một hàm.
args(sapply)
function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
NULL
sapply(mtcars, mean, trim = .5)
mpg cyl disp hp drat wt qsec vs am gear
19.200 6.000 196.300 123.000 3.695 3.325 17.710 0.000 0.000 4.000
carb
2.000
Như bạn thấy, tôi đã vượt qua trim = .5mặc dù nó không được chỉ định như một đối số chính thức của sapplyhàm.
(lưu ý rằng ví dụ này là nhỏ, bạn có thể sử dụng sapply(mtcars, median)để đạt được kết quả tương tự)
trimlà một đối số của meanhàm. Bên ...trong sapplylà cơ chế trimđược chuyển đến mean.
...là R tương đương với đầu vào từ khóa python của (def func(**kwargs))