Contenido principal

struct2table

Convertir un arreglo de estructuras a una tabla

Descripción

T = struct2table(S) convierte un arreglo de estructuras a una tabla. Cada campo de la estructura de entrada se convierte en una variable en la tabla de salida.

Si la entrada es:

  • Una estructura escalar con n campos, los cuales tienen todos m filas, la salida es una tabla de m por n.

    (Para una estructura escalar cuyos campos tengan números de filas diferentes, utilice el argumento nombre-valor AsArray en la siguiente sintaxis).

  • Un arreglo de estructuras de m por 1 o 1 por m con n campos, la salida es una tabla de m por n. Cada estructura proporciona valores para la correspondiente fila de la tabla de salida.

ejemplo

T = struct2table(S,Name=Value) especifica opciones utilizando uno o más argumentos nombre-valor, además del argumento de entrada de la sintaxis anterior.

Por ejemplo, puede forzar a struct2table a tratar la entrada como un arreglo de estructuras estableciendo AsArray en true. Si la entrada es una estructura escalar, la salida es una tabla de una fila.

ejemplo

Ejemplos

contraer todo

Convierta una estructura escalar a una tabla utilizando las opciones predeterminadas.

Cree un arreglo de estructuras, S.

S.Name = ["Chang";"Brown";"Ruiz"];
S.Smoker = ["Y";"N";"Y"];
S.SystolicBP = [124;122;130];
S.DiastolicBP = [93;80;92];

La estructura escalar, S, tiene cuatro campos, cada uno con tres filas.

Convierta el arreglo de estructuras en una tabla.

T = struct2table(S)
T=3×4 table
     Name      Smoker    SystolicBP    DiastolicBP
    _______    ______    __________    ___________

    "Chang"     "Y"         124            93     
    "Brown"     "N"         122            80     
    "Ruiz"      "Y"         130            92     

Los nombres de los campos de estructura de S se convierten en los nombres de las variables en la tabla de salida. El tamaño de T es de 3 por 4.

Cambie Name de una variable a nombres de fila modificando la propiedad de la tabla, T.Properties.RowNames, y eliminando la variable Name.

T.Properties.RowNames = T.Name;
T.Name = [];

T
T=3×3 table
             Smoker    SystolicBP    DiastolicBP
             ______    __________    ___________

    Chang     "Y"         124            93     
    Brown     "N"         122            80     
    Ruiz      "Y"         130            92     

Cree un arreglo de estructuras no escalar, S.

S(1,1).Name = "Chang";
S(1,1).Smoker = "Y";
S(1,1).SystolicBP = 124;
S(1,1).DiastolicBP = 93;

S(2,1).Name = "Brown";
S(2,1).Smoker = "N";
S(2,1).SystolicBP = 122;
S(2,1).DiastolicBP = 80;

S(3,1).Name = "Ruiz";
S(3,1).Smoker = "Y";
S(3,1).SystolicBP = 130;
S(3,1).DiastolicBP = 92;

S
S=3×1 struct array with fields:
    Name
    Smoker
    SystolicBP
    DiastolicBP

S es un arreglo de estructuras de 3 por 1 con cuatro campos.

Convierta el arreglo de estructuras en una tabla.

T = struct2table(S)
T=3×4 table
     Name      Smoker    SystolicBP    DiastolicBP
    _______    ______    __________    ___________

    "Chang"     "Y"         124            93     
    "Brown"     "N"         122            80     
    "Ruiz"      "Y"         130            92     

Los nombres de los campos de estructura de S se convierten en los nombres de las variables en la tabla de salida. El tamaño de T es de 3 por 4.

Para crear una tabla a partir de una estructura escalar cuyos campos tengan números de filas diferentes, trate la estructura escalar como un arreglo de estructuras.

Cree una estructura escalar con los campos name, billing y test.

S.name = "John Doe";
S.billing = 127.00;
S.test = [79 75 73; 180 178 177.5; 220 210 205]
S = struct with fields:
       name: "John Doe"
    billing: 127
       test: [3×3 double]

En este caso, no puede utilizar struct2table(S) porque los campos tienen un número diferente de filas.

En su lugar, trate la entrada como un arreglo de estructuras estableciendo el argumento nombre-valor AsArray. Esta sintaxis permite convertir una estructura escalar en una tabla de una fila incluso si los campos tienen números de filas diferentes.

T = struct2table(S,AsArray=true)
T=1×3 table
       name       billing        test    
    __________    _______    ____________

    "John Doe"      127      {3×3 double}

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como estructura escalar o arreglo de estructuras.

Argumentos de par nombre-valor

contraer todo

Especifique pares opcionales de argumentos como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.

Ejemplo: struct2table(S,AsArray=true) convierte S en una tabla de una fila cuando S es una estructura escalar.

Nombres de fila, especificados como un arreglo de cadenas o un arreglo de celdas de vectores de caracteres cuyos elementos no están vacíos y son distintos. El número de nombres de fila debe ser igual al número de filas del arreglo de entrada.

Los nombres de fila pueden tener cualquier carácter Unicode®, incluidos espacios y caracteres no ASCII, excepto el carácter de dos puntos, :.

Si especifica nombres de fila que tienen caracteres de espacio en blanco iniciales o finales, struct2table los elimina de los nombres de fila.

Nombres de dimensiones, especificados como un arreglo de cadenas de dos elementos o un arreglo de celdas de dos elementos de vectores de caracteres cuyos elementos no están vacíos y son distintos.

Los nombres de las dimensiones pueden tener cualquier carácter Unicode, incluidos espacios y caracteres no ASCII. No obstante, un nombre de dimensión no puede coincidir con ningún nombre de variable de tabla ni con los nombres reservados Properties, RowNames, VariableNames o el carácter de dos puntos, :.

Como alternativa, en todas las versiones se pueden especificar nombres de dimensiones estableciendo la propiedad DimensionNames de la tabla.

Indicador para tratar la entrada como un arreglo de estructuras, especificado como un 1 (true) o 0 (false) numérico o lógico.

true

Valor predeterminado si la entrada es un arreglo de estructuras no escalar

Convierte un arreglo de estructuras a una tabla con una fila para cada estructura y una variable para cada campo del arreglo de estructuras. Los campos pueden tener diferentes tamaños.

Si los valores del campo S(1:m).fieldname tienen:

  • Tamaños y tipos de datos compatibles, y cada valor tiene una fila, la variable de la tabla correspondiente es un arreglo homogéneo.

    Ejemplo:

    S(1).a = [1 2]
    S(2).a = [3 4]
    S(1).b = 5
    S(2).b = 6
    T = struct2table(S)
    
    T =
      2×2 table
          a       b
        ______    _
        1    2    5
        3    4    6
    
  • Tamaños diferentes, tipos de datos incompatibles, o cualquier valor tiene más de una fila, la variable de la tabla correspondiente es un arreglo de celdas.

    Ejemplo:

    S(1).a = [1 2]
    S(2).a = [3 4 5 6]
    S(1).b = 7
    S(2).b = 8
    T = struct2table(S)
    
    T =
      2×2 table
             a         b
        ___________    _
        {[    1 2]}    7
        {[3 4 5 6]}    8
    

false

Valor predeterminado si la entrada es una estructura escalar

Convierta una estructura escalar con n campos a una tabla de m por n. Cada campo debe tener m filas.

Ejemplo:

S.a = [1;2;3]
S.b = [4 5;6 7;8 9]
T = struct2table(S)
T =
  3×2 table
    a      b   
    _    ______
    1    4    5
    2    6    7
    3    8    9

Argumentos de salida

contraer todo

Tabla de salida, devuelta como tabla. La tabla puede almacenar metadatos como descripciones, unidades de variables, nombres de variables y nombres de filas. Para obtener más información, consulte la sección Propiedades de table.

Capacidades ampliadas

expandir todo

Entorno basado en subprocesos
Ejecute código en segundo plano con MATLAB® backgroundPool o acelere código con Parallel Computing Toolbox™ ThreadPool.

Historial de versiones

Introducido en R2013b