4 votos

Se muestra una clase incorrecta al utilizar la función 'apply' en R

Veo un problema con la función apply en R.

1. Esto no muestra la clase correcta.

 apply(iris,2,function(x) class(x))
 #  Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
 # "character"  "character"  "character"  "character"  "character" 
  1. Esto muestra la clase correcta.

    apply(iris[,1:4],2,function(x) class(x))
    #  Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
    #  "numeric"    "numeric"    "numeric"    "numeric" 

¿Alguien puede mostrarme cómo obtener la clase para todas las columnas?

0voto

Buckminster Puntos 332

apply coacciona el primer argumento (es decir, iris o iris[1:4] en su caso) en una matriz. Las matrices sólo pueden tener una clase. En (2), las columnas 1 - 4 son numéricas, por lo que se obtiene una matriz numérica. En (1), sin embargo, la columna 5 contiene cadenas, lo que obliga a que toda la matriz sea una matriz de caracteres.

Los vectores funcionan de la misma manera y el siguiente código puede ser instructivo:

> class(c(1, 2))
[1] "numeric"
> class(c(1, "two"))
[1] "character"

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X