2013-07-22 5 views
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) 
} 

Ceci est ma fonction originale. Maintenant, il y a plusieurs paramètres (pas seulement 4, peut-être 8, 12, ...), et tous les 4 en tant qu'unité. Dois-je utiliser pour la boucle? Dans la boucle for, comment puis-je atteindre le paramètre? Et comment puis-je savoir combien il y en a?utilisation du paramètre dans R

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

La fonction devrait être comme ceci.

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)} 
+0

scorekm <- Fonction (km, x, ...) {} Il devrait être comme ça. –

+0

Désolé, j'ai déjà enregistré mes modifications. –

+0

Votre question n'est toujours pas claire. Qu'essayez-vous de faire avec x1, x2, x3, etc.? Voulez-vous en faire une matrice, peu importe le nombre? – Thomas

Répondre

2

je recueillir toutes les variables par ... comme ceci:

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

Notez que en nommant votre argument, vous donnez un nom de colonne « comme vous allez ».

> 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 
Questions connexes