Giả sử chúng tôi có một danh sách (mylist
) được sử dụng làm đối tượng đầu vào cho một hàm lapply
. Có cách nào để biết phần tử nào trong mylist
đang được đánh giá? Phương pháp này sẽ hoạt động trên lapply
và snowfall::sfApply
(và những người khác có thể áp dụng thành viên gia đình).yếu tố danh sách nào đang được xử lý khi sử dụng tuyết rơi :: sfLapply?
Trên chat, Gavin Simpson đã đề xuất phương pháp sau. Điều này rất hữu ích cho lapply
nhưng không quá nhiều cho sfApply
. Tôi muốn tránh các gói thêm hoặc không quan trọng với danh sách. Bất kỳ đề xuất?
mylist <- list(a = 1:10, b = 1:10)
foo <- function(x) {
deparse(substitute(x))
}
bar <- lapply(mylist, FUN = foo)
> bar
$a
[1] "X[[1L]]"
$b
[1] "X[[2L]]"
Đây là phiên bản song song không cắt.
library(snowfall)
sfInit(parallel = TRUE, cpus = 2, type = "SOCK") # I use 2 cores
sfExport("foo", "mylist")
bar.para <- sfLapply(x = mylist, fun = foo)
> bar.para
$a
[1] "X[[1L]]"
$b
[1] "X[[1L]]"
sfStop()
Đó nhìn "sai" và chắc chắn đủ, khi tôi cố gắng 'attr (mylist [[1]]) <- 1', tôi nhận được: ' Lỗi trong 'attr <-' (' * tmp * ', value = 2): 2 đối số được chuyển đến 'attr <-' yêu cầu 3'. Tôi nghĩ bạn cần chỉ định tên cho thuộc tính –
@BondedDust vui nhộn, tôi không nhớ tên này là KHÔNG hoạt động. Tôi đã chỉnh sửa hai dòng vi phạm. –