有没有办法将列表绑定到数据框

问题描述 投票:0回答:2

我有一个不等长的列表,如下所示

sam <- list(list(symbol = "COUNCODOS.NS", name = "Country Condo's Limited", 
          price = 4.8, changesPercentage = 0, change = 0, dayLow = 4.6, 
          dayHigh = 4.9, yearHigh = 7.05, yearLow = 3.4, marketCap = 372467040, 
          priceAvg50 = 5.383, priceAvg200 = 4.77275, exchange = "NSE", 
          volume = 72558, avgVolume = 111060, open = 4.8, previousClose = 4.8, 
          eps = 0.23, pe = 20.87, earningsAnnouncement = "2023-03-31T04:00:00.000+0000", 
          sharesOutstanding = 77597300, timestamp = 1711619840), list(
              symbol = "SPENCERS.NS", name = "Spencer's Retail Limited", 
              price = 91.3, changesPercentage = 0.44, change = 0.4, dayLow = 90.6, 
              dayHigh = 94.55, yearHigh = 139.3, yearLow = 51.5, marketCap = 8229051600, 
              priceAvg50 = 110.369, priceAvg200 = 83.59675, exchange = "NSE", 
              volume = 500311, avgVolume = 814721, open = 92.25, previousClose = 90.9, 
              eps = -27.41, pe = -3.33, earningsAnnouncement = "2024-05-20T00:00:00.000+0000", 
              sharesOutstanding = 90132000, timestamp = 1711619998),list(symbol = "SRPL-RE.NS", price = 0.05, changesPercentage = -50, 
                                                                         change = -0.05, dayLow = 0.05, dayHigh = 0.1, yearHigh = 0.1, 
                                                                         yearLow = 0.05, marketCap = 0, priceAvg50 = 0, priceAvg200 = 0, 
                                                                         exchange = "NSE", volume = 1503842, avgVolume = 0, open = 0.1, 
                                                                         previousClose = 0.1, eps = NA, pe = 0, earningsAnnouncement = NA, 
                                                                         sharesOutstanding = 0, timestamp = 1691575172))

我正在尝试使用下面的代码将其绑定到数据框

do.call(rbind.data.frame, sam)

但是,当我尝试上面的代码时,出现如下错误

Error in (function (..., deparse.level = 1, make.row.names = TRUE, stringsAsFactors = default.stringsAsFactors(),  : 
  numbers of columns of arguments do not match

有没有办法将列表绑定到数据框

r
2个回答
0
投票

您可以使用

rbindlist
包中的
data.table
函数,如下所示:

library(data.table)
rbindlist(sam, fill = TRUE)
#>          symbol                     name price changesPercentage change dayLow
#>          <char>                   <char> <num>             <num>  <num>  <num>
#> 1: COUNCODOS.NS  Country Condo's Limited  4.80              0.00   0.00   4.60
#> 2:  SPENCERS.NS Spencer's Retail Limited 91.30              0.44   0.40  90.60
#> 3:   SRPL-RE.NS                     <NA>  0.05            -50.00  -0.05   0.05
#>    dayHigh yearHigh yearLow  marketCap priceAvg50 priceAvg200 exchange  volume
#>      <num>    <num>   <num>      <num>      <num>       <num>   <char>   <num>
#> 1:    4.90     7.05    3.40  372467040      5.383     4.77275      NSE   72558
#> 2:   94.55   139.30   51.50 8229051600    110.369    83.59675      NSE  500311
#> 3:    0.10     0.10    0.05          0      0.000     0.00000      NSE 1503842
#>    avgVolume  open previousClose    eps    pe         earningsAnnouncement
#>        <num> <num>         <num>  <num> <num>                       <char>
#> 1:    111060  4.80           4.8   0.23 20.87 2023-03-31T04:00:00.000+0000
#> 2:    814721 92.25          90.9 -27.41 -3.33 2024-05-20T00:00:00.000+0000
#> 3:         0  0.10           0.1     NA  0.00                         <NA>
#>    sharesOutstanding  timestamp
#>                <num>      <num>
#> 1:          77597300 1711619840
#> 2:          90132000 1711619998
#> 3:                 0 1691575172

创建于 2024-03-28,使用 reprex v2.0.2


0
投票
> sam |> purrr::map_dfr(tibble::as_tibble)
# A tibble: 3 × 22
  symbol    name  price changesPercentage change dayLow dayHigh yearHigh yearLow
  <chr>     <chr> <dbl>             <dbl>  <dbl>  <dbl>   <dbl>    <dbl>   <dbl>
1 COUNCODO… Coun…  4.8               0      0      4.6      4.9     7.05    3.4
2 SPENCERS… Spen… 91.3               0.44   0.4   90.6     94.6   139.     51.5
3 SRPL-RE.… NA     0.05            -50     -0.05   0.05     0.1     0.1     0.05
# ℹ 13 more variables: marketCap <dbl>, priceAvg50 <dbl>, priceAvg200 <dbl>,
#   exchange <chr>, volume <dbl>, avgVolume <dbl>, open <dbl>,
#   previousClose <dbl>, eps <dbl>, pe <dbl>, earningsAnnouncement <chr>,
#   sharesOutstanding <dbl>, timestamp <dbl>
© www.soinside.com 2019 - 2024. All rights reserved.