Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


1 questions online user: 49

0
votes
answers
0 views
+10

在R中gunzip文件流?

6

我正在嘗試創建一個R API for StackOverflow。輸出是gzipped。例如:在R中gunzip文件流?

readLines("http://api.stackoverflow.com/0.9/stats/", warn=F) 
[1] "37‹"                                                                       
[2] "3002úØÛy°óé½36„iµXäË–[<üt—Zu[\VmÎHî=ÜÛݹ×ýz’Í.äûû÷>ý´a177Ýh÷17îÝÛÙwßÚáÿþ«¼þý27ÅrÝæÔlgüÀëA±17›ì?ï{M¤û.2037?Ë"¿’06³ì32„Úß9¸ÿ`¼ç÷³*~ÿKêˆð¡06v¦ð²ýô£?ñÃ?ì+ôU?_26滽?]êt¼·?ÞûÈ4ù%16~S0^>àe¶ÀG37½n³éÛôKê缬®‚16Êê¢úý×u‰fó¶]=º{·aΚ?—y{·©î26‹‹»h5^-/‚W1 |9[UŲõ^§?Ç" 
[3] ":¬´¿1M177ð"0íö¹ñ…YÞLëbÕ*!~â2736§çU?®êê¢ÎˆµhòýæÅ´Zn36S¶Z•ùv[­§óm´î?"                                                      
[4] "Í™t˪^d¥£·üÂ?¾ÿ33'¿$ù177" 

是否有R鍵用gunzip這是一個好辦法,總之寫輸出到文件,gunzip'ing它,並在回讀的?

+0

我期待的是這個研究的另一端必然會出現這個包! – 2010-06-28 14:21:41

+0

@JD:絕對如此。我會很快發佈google代碼頁,很高興能與合作者見面。但我最初的感覺是,SO API不是很有用。 – Shane 2010-06-28 15:58:12

沙发
0
11

你可以這樣做:

conn <- gzcon(url("http://api.stackoverflow.com/0.9/stats/")) 
data <- readLines(conn) 
+0

謝謝!完成後請不要忘記關閉連接。 – Shane 2010-06-27 20:13:45

+0

爲什麼需要雙'readLines'? [mbq answer](http://stackoverflow.com/questions/3128422/gunzip-a-file-stream-in-r/3128738#3128738)也可以。 – Marek 2010-06-28 08:19:23

+0

@Marek:已更正。這只是我嘗試不同的事情,我必須粘貼一些額外的命令。感謝您指出了這一點。 – nico 2010-06-28 11:08:31

板凳
0
5

嘗試:

p <- gzcon(url("http://api.stackoverflow.com/0.9/stats/")) 
readLines(p) 
地板
0
4

理想的情況下,我們應該告訴我們可以處理gzip壓縮內容的服務器,從HTTP標頭的內容其實就是gzip的編碼找到然後解壓縮,如果是的話。 Rcurl庫可以做到這一點:

library(Rcurl) 
getURL("http://api.stackoverflow.com/0.9/stats/", 
     .opts=list(encoding="identity,gzip") 
+1

這將是正確的做法,但請注意Stack Overflow API團隊在這方面已經[決定不服從HTTP協議](http://stackapps.com/questions/729);略有相關,我們暫時不會看到[正確的HTTP/1.1緩存控制](http://stackapps.com/questions/1028)... – 2010-07-10 08:17:14