Tôi đang sử dụng gói glmulti để phù hợp với các mô hình cho một số bộ dữ liệu. Mọi thứ hoạt động nếu tôi phù hợp với một tập dữ liệu tại một thời điểm.Tại sao tôi không thể chuyển tập dữ liệu sang một hàm?
Vì vậy, ví dụ:
output <- glmulti(y~x1+x2,data=dat,fitfunction=lm)
công trình tốt.
Tuy nhiên, nếu tôi có thể tạo một hàm wrapper như vậy:
analyze <- function(dat)
{
out<- glmulti(y~x1+x2,data=dat,fitfunction=lm)
return (out)
}
chỉ đơn giản không hoạt động. Lỗi tôi nhận được là
error in evaluating the argument 'data' in selecting a method for function 'glmulti'
Trừ khi có khung dữ liệu có tên dat, nó không hoạt động. Nếu tôi sử dụng results=lapply(list_of_datasets, analyze)
, nó không hoạt động. Vì vậy, những gì cho? Nếu không có trình bao bọc nói của tôi, tôi không thể lapply một danh sách các bộ dữ liệu thông qua chức năng này. Nếu bất cứ ai có suy nghĩ hoặc ý tưởng về lý do tại sao điều này xảy ra hoặc làm thế nào tôi có thể có được xung quanh nó, đó sẽ là tuyệt vời.
dụ 2:
dat=list_of_data[[1]]
analyze(dat)
hoạt động tốt. Vì vậy, theo một nghĩa nào đó, nó bỏ qua đối số và chỉ tìm kiếm một khung dữ liệu có tên là dat. Nó cư xử giống nhau bất kể tôi gọi nó là gì.
Cảm ơn một tấn Joris. Tôi thực sự phải ngồi xuống và xương lên trên phương pháp S4. Ít nhất là bây giờ tôi có thể thấy cách giải quyết này hoạt động. cổ vũ. – Maiasaura
Nó hoạt động tốt, miễn là bạn không có một đối tượng gọi là "dat" trong vùng làm việc của bạn. Nếu vậy, cái đó sẽ bị ghi đè bởi hàm assign(). Đó là điều bạn chắc chắn muốn tránh ... –
Không phải S4 và .GlobalEnv nữa: tát vào trán:. –