Trong this introduction to functional programming, tác giả Hadley Wickham tạo nhà máy sau chức năng:Tạo một danh sách các chức năng sử dụng một vòng lặp trong R
power <- function(exponent) {
function(x) {
x^exponent
}
}
Sau đó ông cho thấy cách chức năng này có thể được sử dụng để xác định các chức năng khác, chẳng hạn như
square <- power(2)
cube <- power(3)
Bây giờ giả sử tôi muốn tạo ra các chức năng đồng thời thông qua các vòng lặp sau:
ftns <- lapply(2:3, power)
này dường như không làm việc, như 3 được gán cho số mũ cho tất cả các mục của danh sách:
as.list(environment(ftns[[1]]))
$exponent
[1] 3
Ai đó có thể vui lòng giúp tôi hiểu những gì xảy ra với mã này?
Cảm ơn!
Mã của bạn hoạt động như mong đợi đối với tôi: 'as.list (môi trường (ftns [[1]])) cho thấy số mũ là 2. –
Tôi có thể hỏi bạn có sử dụng phiên bản cũ của R không? - Tôi có thể nhận được vấn đề của bạn trên một R 2.15 cũ tôi có trên một thanh bộ nhớ ở đây. – thelatemail
@thelatemail Hmm thật kỳ quặc. Tôi đang sử dụng phiên bản R 3.1.3 (2015-03-09). – David