Constantemente estoy recibiendo este error. Estoy seguro de que la matriz no tiene ningún no-las entradas numéricas. También traté de imputación de la matriz, no funcionó.

Alguien sabe qué puede estar el error?

fileUrl <- "https://dl.dropboxusercontent.com/u/76668273/kdd.csv";
download.file(fileUrl,destfile="./kdd.csv",method="curl");
kddtrain <- read.csv("kdd.csv");
kddnumeric <- kddtrain[,sapply(kddtrain,is.numeric)];
kddmatrix <- as.matrix(kddnumeric);
svd1 <- svd(scale(kddmatrix));
En el futuro, un pequeño reproducible ejemplo (y no es algo que requiere de la descarga) es apreciado.

OriginalEl autor Shubham Saini | 2014-01-29

1 Comentario

  1. 8

    Tiene columnas compuestas de todos los ceros. El uso de scale en una columna de ceros devuelve una columna compuesta de NaN. Para resolver este problema, quite las columnas donde tienes todos los ceros (svd no revelan nada nuevo acerca de ellos), o reemplazar NaN columnas con cero después de usar scale.

    Reproducible ejemplo:

    mat <- matrix(c(1,2,3,0,0,0,2,4,6,5,12,13),nrow = 3)
         # [,1] [,2] [,3] [,4]
    # [1,]    1    0    2    5
    # [2,]    2    0    4   12
    # [3,]    3    0    6   13
    scale(mat)
         # [,1] [,2] [,3]       [,4]
    # [1,]   -1  NaN   -1 -1.1470787
    # [2,]    0  NaN    0  0.4588315
    # [3,]    1  NaN    1  0.6882472
    # attr(,"scaled:center")
    # [1]  2  0  4 10
    # attr(,"scaled:scale")
    # [1] 1.000000 0.000000 2.000000 4.358899
    svd(mat) #fine
    svd(scale(mat)) # not fine
    muchas gracias, la respuesta perfecta. una simple línea de kddmatrix <- kddmatrix[,colSums(kddmatrix != 0) != 0] antes de la aplicación de enfermedad vesicular porcina resuelto.

    OriginalEl autor Blue Magister

Dejar respuesta

Please enter your comment!
Please enter your name here