R - 在for循环中追加来自JSON的数据帧

时间:2017-03-06 08:37:47

标签: r

我已经查看过许多关于在for循环中附加数据框但不能找到解决我特定问题的帖子的帖子。请阅读以下内容。任何建议将不胜感激!

我尝试在for循环中追加数据框而不重写整个文件。我只想在每次循环执行时添加新记录。我是从API下载数据的。与API接口的代码和下载数据工作正常。我使用jsonlite来解析json输出,并可以在控制台中查看数据。不幸的是,当我尝试将数据附加到数据框中时,我收到一条错误消息,请参阅下文。

当前流程:

使用的图书馆:

library(quantmod)
library(ROAuth)
library(jsonlite)
library(plyr)

在for循环之前创建数据框:

data_all<-data.frame()

在循环结束时追加数据的代码:

data<-fromJSON(response)

data_all<-rbind(data_all,data)
 }

错误讯息:

 Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  row names supplied are of the wrong length

同样,与API接口,下载和解析数据的代码工作正常。这是在控制台中查看的示例数据集:

$response
$response$`@id`
[1] "8193818b-a60c-462c-9700-f52638a75f49"

$response$elapsedtime
[1] "0"

$response$quotes
$response$quotes$quote
    adp_100  adp_200   adp_50 adv_21 adv_30 adv_90    ask ask_time asksz basis
1   32.5810  30.0390  32.2500   5135   4973   6973   0.00    00:00     0    na
2   78.1520  72.2150  77.3350  90738  75752  62908   0.00    00:00     0    na
3    6.1742   7.0495   5.8037   8651   7541  11224 0.0000    00:00     0    na
4    1.5372   1.8598   1.4709  40501  98865 108243 0.0000    00:00     0    na
5   15.7944  17.2267  14.8303 191035 208140 218453   0.00    00:00     0    na
6     17.67    17.22    16.84 263510 245725 264352 18.970    00:00    21    na
7  485.8671 462.3571 479.1363   3702   3545   4654   0.00    00:00     0    na
8    34.681   35.654   33.258 120094 108802 101061  0.000    00:00     0    na
9    2.2274   1.9028   2.2863 863965 812934 976648  2.510    00:00     2    na
10  16.3700  15.4000  16.4300 385475 316978 268737  0.000    00:00     0    na
      beta    bid bid_time bidsz bidtick chg chg_sign chg_t     cl
1   0.6801   0.00    00:00     0       d   0        e    na  32.65
2  -0.7521   0.00    00:00     0       d   0        e    na  68.28
3  -0.0625 0.0000    00:00     0       d   0        e    na 5.9900
4   3.4096 0.0000    00:00     0       d   0        e    na 1.4787
5   1.4868  12.15    00:00     1       d   0        e    na  16.90
6   0.3458 18.960    00:00    23       d   0        e    na 19.180
7   0.6924   0.00    00:00     0       d   0        e    na 492.80
8   1.8913  0.000    00:00     0       d   0        e    na 34.300
9   0.6425  0.000    00:00     0       d   0        e    na  2.550
10  2.0775  0.000    00:00     0       d   0        e    na 17.105
   contract_size cusip       date                  datetime days_to_expiration
1             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
2             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
3             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
4             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
5             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
6             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
7             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
8             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
9             na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
10            na    na 2017-03-03 2017-03-03T00:00:00-05:00                 na
    div divexdate divfreq divpaydt dollar_value    eps exch exch_desc     hi
1  0.22  20170427       Q 20170515     69329.46   1.68 NASD    NASDAQ  32.80
2  0.34  20161228       Q 20170109   3562746.42   0.89 NASD    NASDAQ  68.10
3    na        na       Q       na    1919.7966  -6.88 NASD    NASDAQ 5.9800
4    na        na       Q       na   83955.2782  -4.13 NASD    NASDAQ 1.6000
5    na        na       Q       na   2559591.04   -2.9 NASD    NASDAQ  17.40
6    na        na       Q       na  5645067.126  -1.15 NASD    NASDAQ 19.205
7  1.05  20170313       Q 20170331    884035.88  15.16 NASD    NASDAQ 490.75
8    na        na       Q       na  2481311.782 1.7492 NASD    NASDAQ 34.385
9    na        na       Q       na  1359155.880  -0.17 NASD    NASDAQ  2.560
10   na        na       Q       na  1951265.457   0.52 NASD    NASDAQ 17.220
    iad idelta igamma imp_volatility incr_vl irho issue_desc itheta ivega
1  0.88     na     na             na    1278   na         na     na    na
2  1.36     na     na             na    6202   na         na     na    na
3    na     na     na             na     100   na         na     na    na
4    na     na     na             na    3583   na         na     na    na
5    na     na     na             na    9589   na         na     na    na
6    na     na     na             na   16732   na         na     na    na
7   4.2     na     na             na     466   na         na     na    na
8    na     na     na             na    7410   na         na     na    na
9    na     na     na             na    8903   na         na     na    na
10   na     na     na             na   14084   na         na     na    na
     last     lo                               name op_delivery op_flag
1   32.80  32.60                AMES NATIONAL CORP.          na       0
2   66.71  66.59              ATN INTERNATIONAL INC          na       1
3  5.9800 5.7243                        ATOMERA INC          na       0
4  1.5101 1.4400                ATOSSA GENETICS INC          na       0
5   17.15  16.85          ATARA BIOTHERAPEUTICS INC          na       1
6  18.960 18.700                       ATRICURE INC          na       1
7  489.75 489.75                       ATRION CORP.          na       0
8  33.560 33.505                     ASTRONICS CORP          na       1
9   2.500  2.460                ANTARES PHARMA INC.          na       1
10 17.070 16.870 AIR TRANSPORT SERVICES GROUP, INC.          na       1
   op_style op_subclass openinterest    opn opt_val pchg pchg_sign   pcls
1        na          na           na  32.60      na 0.00        na  32.80
2        na          na           na  67.91      na 0.00        na  66.71
3        na          na           na 5.7243      na 0.00        na 5.9800
4        na          na           na 1.4500      na 0.00        na 1.5101
5        na          na           na  16.95      na 0.00        na  17.15
6        na          na           na 19.000      na 0.00        na 18.960
7        na          na           na 490.75      na 0.00        na 489.75
8        na          na           na 34.330      na 0.00        na 33.560
9        na          na           na  2.550      na 0.00        na  2.500
10       na          na           na 17.100      na 0.00        na 17.070
        pe    phi    plo   popn pr_adp_100 pr_adp_200 pr_adp_50    pr_date
1  19.5238  32.95  32.65  32.90    32.5817    30.0207   32.2551 2017-03-02
2  74.9551  70.54  68.03  70.23   781.5260    72.1521   77.4760 2017-03-02
3        0 6.2400 5.7700 5.7700     6.1742     7.0571    5.8094 2017-03-02
4        0 1.4803 1.4200 1.4515     1.5372     1.8732    1.4715 2017-03-02
5        0  17.35  16.25  16.40    15.7944    17.2638   14.8294 2017-03-02
6        0 19.590 18.520 18.880     176.73      17.21     16.82 2017-03-02
7  32.3054 493.30 488.35 488.35   485.8671   462.2427  478.6029 2017-03-02
8  19.1859 35.425 33.980 34.730    346.814     35.661    33.292 2017-03-02
9        0  2.565  2.480  2.510     2.2274     1.8969    2.2805 2017-03-02
10 32.8269 17.340 17.040 17.340   163.7500    15.4012   16.4200 2017-03-02
   pr_openinterest prbook  prchg prem_mult put_call   pvol qcond rootsymbol
1               na   1.79  -0.25        na       na   5559    38         na
2               na   1.60  -1.95        na       na  49971    38         na
3               na 1.0678 0.2200        na       na   4653    38         na
4               na 0.5741 0.0272        na       na  22806    38         na
5               na   1.83   0.50        na       na 294468    38         na
6               na  3.710  0.300        na       na 692148    38         na
7               na   5.58   4.45        na       na   3315    38         na
8               na  2.206 -0.430        na       na 105349    38         na
9               na  7.812  0.040        na       na 569164    38         na
10              na  3.178 -0.235        na       na 119506    38         na
   secclass sesn       sho strikeprice symbol tcond  timestamp tr_num tradetick
1         0   na   9311000          na   ATLO    29 1488790771     28         e
2         0   na  16144000          na   ATNI    29 1488790771   1031         e
3         0   na   5357000          na   ATOM   191 1488790771      8         e
4         0   na   3788000          na   ATOS    73 1488790771    105         e
5         0   na  28861000          na   ATRA    29 1488790771   1476         e
6         0   na  33240000          na   ATRC    29 1488790771   2541         e
7         0   na   1824000          na   ATRI    29 1488790771     72         e
8         0   na  21692000          na   ATRO    29 1488790771    848         e
9         0   na 155087000          na   ATRS    29 1488790771   2772         e
10        0   na  59568000          na   ATSG    29 1488790771   1108         e
   trend under_cusip undersymbol     vl volatility12   vwap  wk52hi wk52hidate
1     na          na          na   2116       0.2336  32.76    37.0   20170106
2     na          na          na  53289       0.2874  66.85   87.80   20170103
3     na          na          na    329       0.5125 5.8352 10.2000   20160830
4     na          na          na  54562       0.9774 1.5387    6.40   20160309
5     na          na          na 150230       0.7351  17.03   25.73   20160805
6     na          na          na 297923       0.4456 18.948   20.40   20161115
7     na          na          na   1806       0.2029 489.49     522   20161215
8     na          na          na  73551       0.4079 33.735   41.00   20161209
9     na          na          na 544378       0.6475  2.496    2.67   20170215
10    na          na          na 114571       0.3617 17.031   17.60   20170224
   wk52lo wk52lodate xdate xday xmonth xyear  yield
1    23.0   20160311    na   na     na    na 2.6829
2   62.70   20160817    na   na     na    na 2.0387
3  5.5000   20170228    na   na     na    na     na
4    1.30   20161230    na   na     na    na     na
5   12.45   20170131    na   na     na    na     na
6   13.44   20160512    na   na     na    na     na
7     373   20160323    na   na     na    na 0.8576
8   25.90   20160504    na   na     na    na     na
9    0.67   20160318    na   na     na    na     na
10  11.70   20160307    na   na     na    na     na


$response$error
[1] "Success"

我是否需要在追加之前转换NA值来处理数据?我应该使用不同的库或函数来附加数据而不重写整个文件吗?非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

此代码是可重现的,并将JSON附加到data.frame。

library(jsonlite)
library(dplyr)
data_all <- data.frame()
response <- toJSON(mtcars, pretty=TRUE)
for(i in 1:3){
  data <- fromJSON(response)
  data_all <- bind_rows(data_all, data)
}

虽然数据只有32行,但data_all有96行。