Buenas noches Luis Alberto,

Cual es la diferencia entre  d.chiCol y dchi.Col en el for para j?

He aqui una nueva version de tu programa:

# calcula la distancia chi^2 para una matrix A
#  -- nombres es un argumento logico que controla si A tiene
#     nombres en las columnas.  Por defecto es TRUE
dist.chi <- function(A, nombres = TRUE){
m <- dim(A)[2]
n <- dim(A)[1]
B <- prop.table(A, 2)
C <- prop.table(A)
pesos <- apply(C,1,sum)
res <- matrix(NA, m, m)
for (i in 1:m) for(j in 1:m){
 if(i == j) res[i, j] <- 0
else{
x <- (B[,i]-B[,j])^2
 val <- sqrt(sum(x/pesos))
res[i, j] <- val
}
 }
    if(nombres) colnames(res) <- rownames(res) <- colnames(A)
res
}

# ---------
#  Ejemplo
# ---------
# datos
set.seed(123)
X <- matrix(rpois(100, 10), ncol = 10)
colnames(X) <- paste('x', 1:10, sep = "")
X

# resultado
res <- dist.chi(X)
res

# removiendo los nombres de X
# y ejecutando el programa de nuevo
colnames(X) <- rownames(X) <- NULL
res <- dist.chi(X)
res

Saludos,
Jorge Ivan Velez


On Thu, May 6, 2010 at 6:56 PM, Luis Alberto Lopez Gonzalez <> wrote:

> Hola a todos... saludos cordiales....
> Quiero hacer una función que me calcule la matriz de distancias chi
> cuadrado, pero obtengo este mensaje de error:
>
> Error en d.chiCol[i, j] = 0 : objeto de tipo 'closure' no es subconjunto
>
>
> d.chiCol<- function(A)
> {
> m <- dim(A)[2]
> n <- dim(A)[1]
> B <- prop.table(A,2)
> C <- prop.table(A)
> pesos <- apply(C,1,sum)
> dchi.Col <- matrix(,m,m)
> for (i in 1:m)
> {
>  for(j in 1:m)
>  {
>  if(i==j)
>      d.chiCol[i,j]=0
>    else
>      x <- (B[,i]-B[,j])^2
>      val <- x/pesos
>      dchi.Col[i,j]=sqrt(sum(val))
>  }
> }
> dchi.Col
> }
> Alguien me puede colaborar, gracias.
>
>
>  --
> Luis Alberto López González
>
>        [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>

	[[alternative HTML version deleted]]

