2012-04-20 25 views
5

Tôi đang cố sửa đổi hàm stats::kmeans để trả về số lần lặp lại (see here). Khi tôi sao chép nguồn vào tệp của riêng mình, sửa đổi hàm và chạy nó, tôi gặp lỗi về đối tượng C_kmns bị thiếu khi cố gắng thực thi hàm do_one. Đối tượng này được chuyển đến một cuộc gọi .Fortran và không được tạo ở bất cứ đâu trong chức năng kmeans. Đối tượng này đến từ đâu?không thể tìm thấy đối tượng C_kmns khi được chuyển đến .Fortran()

Các lỗi tôi nhận được là

Error in do_one(nmeth) : object 'C_kmns' not found 

Dưới đây là một đoạn mã của "vi phạm" gọi.

do_one <- function(nmeth) { 
     Z <- 
       switch(nmeth, 
         { # 1 
          Z <- .Fortran(C_kmns, as.double(x), as.integer(m), 
            as.integer(ncol(x)), 
            ... 

Trả lời

8

C_kmns là đối tượng không được xuất trong không gian tên thống kê. Bạn có thể giải quyết vấn đề bằng cách nói R nơi tìm nó với số liệu thống kê ::: C_kmns. trong ví dụ của bạn:

Z <- .Fortran(stats:::C_kmns, as.double(x), as.integer(m), 
            as.integer(ncol(x)), 
            ... 

Nói chung, khi bạn nhận được một lỗi đối tượng không tìm thấy, bạn có thể đi tìm kiếm nó với getAnywhere("C_kmns")

Các vấn đề liên quan