我已经查看过许多关于在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值来处理数据?我应该使用不同的库或函数来附加数据而不重写整个文件吗?非常感谢任何建议。
答案 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行。