5

stats::kmeans反復回数を返すように関数を変更しようとしています (こちらを参照)。ソースを自分のファイルにコピーし、関数を変更しC_kmnsて実行すると、関数を実行しようとすると、オブジェクトが見つからないというエラーが発生しdo_oneます。.Fortranこのオブジェクトは呼び出しに渡され、kmeans関数内のどこにも作成されていません。このオブジェクトはどこから来たのですか?

私が得ているエラーは

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

「問題のある」呼び出しのコード スニペットを次に示します。

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

1 に答える 1

8

C_kmnsは、stats名前空間内のエクスポートされていないオブジェクトです。この問題は、stats:::C_kmnsを使用してRにどこにあるかを指示することで解決できます。あなたの例では:

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

一般に、オブジェクトが見つからないというエラーが発生した場合は、getAnywhere("C_kmns")

于 2012-04-20T21:45:46.833 に答える