[R-br] Converter list em data.frame

Diego Bilski diegobilski em gmail.com
Segunda Agosto 27 15:21:21 BRT 2012


se você renomear os índices da sua lista antes, e.g.

> names(resd)<-c("tempo1", "tempo2", ...,  "tempoN")

e depois aplicar a função ldply (não a laply), será criada uma coluna
.id com os nomes dos índices.

laply retorna um array
ldply retorna um data frame


Diego



2012/8/27 Thiago Veloso <thi_veloso em yahoo.com.br>:
>   Caros Fernando e Diego,
>
>   Obrigado pelas sugestões. Ambas funcionaram, mas nenhuma delas guardou o índice da lista.
>
>   Vejam abaixo as saídas dos comandos:
>
>> df1 <- cbind(rep(1:length(resd), each = 15), do.call(rbind, resd)) Warning message: In cbind(rep(1:length(resd), each = 15), do.call(rbind, resd)) : number of rows of result is not a multiple of vector length (arg 1) > head(df1)  value count
> [1,] 1     1   267
> [2,] 1     6    86
> [3,] 1     7    21
> [4,] 1     8     7
> [5,] 1     9  3683
> [6,] 1    10   537
>
> -------------------------------------------------------------------------
>
>> df2 <- laply(resd, data.frame) > head(df2) [[1]] value count
> 1      1   267
> 2      6    86
> 3      7    21
> 4      8     7
> 5      9  3683
> 6     10   537
> 7     11   135
> 8     12    17
> 9     13    74
> 10    NA  2228 [[2]] value count
> 1      1  2257
> 2      2    57
> 3      3   289
> 4      4     2
> 5      6    88
> 6      7    13
> 7      8    32
> 8      9  1137
> 9     10   756
> 10    11    99
> 11    12    22
> 12    13    67
> 13    14     1
> 14    15     7
> 15    NA  2228 [[3]] value count
> 1      1  2170
> 2      2    61
> 3      3   316
> 4      4     3
> 5      6    74
> 6      7     1
> 7      8    12
> 8      9   781
> 9     10  1100
> 10    11    66
> 11    12   160
> 12    13    46
> 13    14     9
> 14    15    28
> 15    NA  2228 [[4]] value count
> 1      1  2174
> 2      2    56
> 3      3   300
> 4      4     3
> 5      6    62
> 6      8     4
> 7      9   564
> 8     10  1317
> 9     11    75
> 10    12   113
> 11    13    42
> 12    14    85
> 13    15    32
> 14    NA  2228 [[5]] value count
> 1      1  2174
> 2      2    58
> 3      3   301
> 4      4     5
> 5      6    54
> 6      8     4
> 7      9   469
> 8     10  1393
> 9     11    83
> 10    12    76
> 11    13    41
> 12    14   136
> 13    15    33
> 14    NA  2228 [[6]] value count
> 1      1  2185
> 2      2    52
> 3      3   300
> 4      4     4
> 5      6    52
> 6      8     3
> 7      9   397
> 8     10  1457
> 9     11    83
> 10    12    74
> 11    13    38
> 12    14   146
> 13    15    36
> 14    NA  2228
>
>
>   Um abraço,
>   Thiago.
>
>
> ----- Original Message -----
> From: Thiago Veloso <thi_veloso em yahoo.com.br>
> To: Lista R <r-br em listas.c3sl.ufpr.br>
> Cc:
> Sent: Monday, August 27, 2012 9:37 AM
> Subject: [R-br] Converter list em data.frame
>
>  Olá pessoal,
>
>  Uma dúvida básica: possuo uma lista de objetos que contam a frequência de valores (count) em classes (value). Nessa lista, cada índice ([[1]], [[2]] etc) corresponde a um passo de tempo. Vejam abaixo uma amostra:
>
>> head(resd)
> [[1]]                ! essa é a primeira unidade de tempo.
>       value count
>  [1,]     1   267    ! na classe '1' foram encontradas 267 ocorrências, e assim por diante
>  [2,]     6    86
>  [3,]     7    21
>  [4,]     8     7
>  [5,]     9  3683
>  [6,]    10   537
>  [7,]    11   135
>  [8,]    12    17
>  [9,]    13    74
> [10,]    NA  2228
>
> [[2]]                ! essa é a segunda unidade de tempo.
>       value count
>  [1,]     1  2257    ! na classe '1' foram encontradas 2257 ocorrências, e assim por diante
>  [2,]     2    57
>  [3,]     3   289
>  [4,]     4     2
>  [5,]     6    88
>  [6,]     7    13
>  [7,]     8    32
>  [8,]     9  1137
>  [9,]    10   756
> [10,]    11    99
> [11,]    12    22
> [12,]    13    67
> [13,]    14     1
> [14,]    15     7
> [15,]    NA  2228
>
> [[3]]
>       value count
>  [1,]     1  2170
>  [2,]     2    61
>  [3,]     3   316
>  [4,]     4     3
>  [5,]     6    74
>  [6,]     7     1
>  [7,]     8    12
>  [8,]     9   781
>  [9,]    10  1100
> [10,]    11    66
> [11,]    12   160
> [12,]    13    46
> [13,]    14     9
> [14,]    15    28
> [15,]    NA  2228
>
> [[4]]
>       value count
>  [1,]     1  2174
>  [2,]     2    56
>  [3,]     3   300
>  [4,]     4     3
>  [5,]     6    62
>  [6,]     8     4
>  [7,]     9   564
>  [8,]    10  1317
>  [9,]    11    75
> [10,]    12   113
> [11,]    13    42
> [12,]    14    85
> [13,]    15    32
> [14,]    NA  2228
>
> [[5]]
>       value count
>  [1,]     1  2174
>  [2,]     2    58
>  [3,]     3   301
>  [4,]     4     5
>  [5,]     6    54
>  [6,]     8     4
>  [7,]     9   469
>  [8,]    10  1393
>  [9,]    11    83
> [10,]    12    76
> [11,]    13    41
> [12,]    14   136
> [13,]    15    33
> [14,]    NA  2228
>
> [[6]]
>       value count
>  [1,]     1  2185
>  [2,]     2    52
>  [3,]     3   300
>  [4,]     4     4
>  [5,]     6    52
>  [6,]     8     3
>  [7,]     9   397
>  [8,]    10  1457
>  [9,]    11    83
> [10,]    12    74
> [11,]    13    38
> [12,]    14   146
> [13,]    15    36
> [14,]    NA  2228
>
>  Como converter essa lista em um data.frame, mantendo o índice, e salvar em um arquivo ascii?
>
>  Agradece pelas dicas,
>  Thiago.
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
>


Mais detalhes sobre a lista de discussão R-br