0
scorekm <- function(km, x1,x2,x3,x4) {
    data<-matrix(c(x1,x2,x3,x4),nrow=1)
    k <- nrow(km$centers)
    n <- nrow(data)
    d <- as.matrix(dist(rbind(km$centers, data)))[-(1:k),1:k]
    d <- matrix(d,nrow=1)
    out <- apply(d, 1, which.min)
    return(out)
}

これが私の本来の機能です。現在、いくつかのパラメーター (4 つだけでなく、おそらく 8、12、...) があり、4 つごとに 1 つの単位があります。forループを使用する必要がありますか? for ループでは、どうすればパラメータに到達できますか?また、パラメータの数を知るにはどうすればよいですか?

 scorekm <- function(km,x...){} 

関数はこのようにする必要があります。

km<-kmeans(iris,3)
scorekm<-
function(km, x,...)
{
result=NULL
for(i in 1:nargs()-1)
{
data<-matrix(c(args[[i+1]],args[[i+2]],args[[i+3]],args[[i+4]]),nrow=1)
k <- nrow(km$centers)
d <- as.matrix(dist(rbind(km$centers, data)))[-(1:k),1:k]
d <- matrix(d,nrow=1)
out <- apply(d, 1, which.min)
result<-cbind(out,result)
i<-i+4
}
return(result)}
4

1 に答える 1

2

...次のようにすべての変数を収集します。

scorekm <- function(km, x, ...) {
  x.args <- list(...)
  out <- do.call("cbind", x.args)
  out
}

引数に名前を付けることで、「そのまま」列名を付けていることに注意してください。

> scorekm(km = 1, x = 2, x1 = runif(3), column2 = runif(3), variable3 = runif(3))
            x1    column2 variable3
[1,] 0.2106436 0.07142857 0.6466394
[2,] 0.3684540 0.16306419 0.9937268
[3,] 0.5230319 0.66318683 0.3020110
于 2013-07-22T10:30:33.370 に答える