2015-03-16 3 views
23

dplyr उपयोग करते समय, tbl_df समारोह प्रिंट एक बयान डेटा फ्रेम कह "स्थानीय" है:`dplyr ::: print.tbl_df` से" स्थानीय डेटा फ्रेम "संदेश का क्या अर्थ है?

> mtcars %>% 
+  group_by(gear) 
Source: local data frame [32 x 11] 
Groups: gear 

    mpg cyl ... 
1 21.0 6 ... 

मैं में स्मृति का मतलब एक स्थानीय डेटा फ्रेम में सोचा है, और एक गैर-स्थानीय डेटा फ्रेम एक था एसक्यूएल जैसे डेटाबेस। मुझे लगता है कि मैं उस धारणा में गलत हूं, यद्यपि। इस tutorial video में लगभग 25:25 पर, केविन मार्कहम का कहना है कि data.frame ऑब्जेक्ट्स स्थानीय डेटा फ्रेम नहीं हैं, जिन्हें मैं मानता था कि वे थे।

मैंने tbl_df दस्तावेज़ीकरण को देखा और dplyr introduction vignette में एक खोज फ़ंक्शन का उपयोग किया, लेकिन स्थानीय डेटा फ्रेम का विवरण नहीं मिल रहा है।

प्रश्न:स्थानीय डेटा फ्रेम क्या है?

+6

यह सिर्फ एक दूरस्थ डेटा स्रोत जैसे MySQL डेटाबेस या कुछ से अलग है। – joran

+3

यदि लिंक किया गया वीडियो सटीक है, तो 'data_frame' ऑब्जेक्ट स्थानीय डेटा फ्रेम हैं, लेकिन' data.frame' ऑब्जेक्ट्स नहीं हैं। अब मैं भी उलझन में हूँ। – patabongo

+2

मुझे नहीं लगता कि @ टायलर मूल धारणा में गलत है, और काम पर कुछ अर्थशास्त्र हैं। शायद, दस्तावेज़ों और केविन मार्कहम के बयान के अनुरूप, कोई कह सकता है कि "स्थानीय डेटा फ्रेम" डेटा.फ्रेम से बनाए गए tbl_df द्वारा लिपटा गया डेटा है, जो स्वयं को लपेटने तक 'स्थानीय डेटा फ्रेम' नहीं है? – jaimedash

उत्तर

1

http://www.inside-r.org/packages/cran/dplyr/docs/tbl_df

एक डेटा फ्रेम tbl एक स्थानीय डेटा फ्रेम गिर्द घूमती है। एक नियमित डेटा फ्रेम पर tbl_df का उपयोग करने का मुख्य लाभ प्रिंटिंग है: टीबीएल ऑब्जेक्ट्स केवल कुछ पंक्तियों और एक ही स्क्रीन पर फिट होने वाले सभी कॉलम प्रिंट करते हैं, जो इसे बाकी के रूप में पाठ के रूप में वर्णित करते हैं।

से

http://cran.r-project.org/web/packages/dplyr/dplyr.pdf

स्थलों ध्यान दें कि स्थानीय डेटा फ्रेम के लिए, आदेश जो आम तौर पर आर में किया स्थानीय विशिष्ट आदेश देने के लिए पहुँच नहीं है सी ++ कोड में किया जाता है इसका मतलब है कि तार कर रहे हैं आदेश दिया गया है कि सी लोकेल

8

मैं इस प्रश्न में उल्लिखित video tutorial के लेखक हूं। यहाँ इस चर्चा के लिए प्रासंगिक कार्यों का एक सारांश है:

  • data.frame()नियमित डेटा फ्रेम बनाने के लिए आर के कार्य है।
  • data_frame()स्थानीय डेटा फ्रेम बनाने के लिए dplyr का फ़ंक्शन है।
  • tbl_df() और as_data_frame() एक स्थानीय डेटा फ्रेम में एक नियमित डेटा फ्रेम (या एक सूची) परिवर्तित करने के लिए dplyr के कार्य हैं।

तो, नियमित और स्थानीय डेटा फ्रेम के बीच क्या अंतर है? बहुत कम। स्थानीय डेटा फ्रेम केवल नियमित डेटा फ्रेम है जो tbl_df कक्षा के साथ निकर मुद्रण के लिए लपेटा गया है। (डेटा अभी भी एक नियमित डेटा फ्रेम "उन्नत" में संग्रहित है।)

विशेष रूप से, मुद्रण के रूप में अपनी स्क्रीन पर फिट कर सकते हैं एक स्थानीय डेटा फ्रेम केवल पहले 10 पंक्तियाँ, और के रूप में कई कॉलम चलता ।(आप के के शीर्ष पर इस व्यवहार का एक उदाहरण देख सकते हैं, जो ऊपर दिए गए ट्यूटोरियल से पहले है)।

सभी dplyr काम करता है, डिफ़ॉल्ट रूप से एक स्थानीय डेटा फ्रेम लौट ही आप data.frame() समारोह का उपयोग कर एक नियमित डेटा फ्रेम करने के लिए इसे वापस बदल सकते हैं। ऐसा करने का एक कारण यह है कि यदि आप नियमित डेटा फ़्रेम प्रिंट पसंद करते हैं, अर्थात् आप अधिक पंक्तियां या अधिक कॉलम देखना चाहते हैं। हालांकि, dplyr आप इसे परिवर्तित किए बिना ऐसा कर सकते हैं:

library(dplyr) 
library(nycflights13) 

# print a local data frame (10 rows, variable number of columns) 
flights 

# print 15 rows 
print(flights, n = 15) 

# print all rows (don't run this, since it has 336,776 rows) 
print(flights, n = Inf) 

# print all columns 
print(flights, width = Inf) 

dplyr है कि और अधिक तकनीकी जानकारी प्रदान करता है डेटा फ्रेम के बारे में vignette है।

+0

मैंने मूल रूप से उत्तर दिया कि 'tbl_df()' और 'as_data_frame() 'थोड़ा है विभिन्न उपयोग @ हैडली ने [ट्विटर] पर स्पष्ट किया (https://twitter.com/justmarkham/status/702504719135186944) कि वे "मूल रूप से वही" हैं, इसलिए मैंने अपना जवाब अपडेट किया। –

+0

मुद्रण विधियों के अलावा नियमित 'data.frame' और 'tbl_df' के बीच एक और अंतर है। दस्तावेज़ों से उद्धरण: "[कभी भी सरल नहीं होता है (इसलिए) हमेशा डेटा.फ्रेम देता है"। इसका मतलब है कि 'डेटा (mtcars); mtcars [, 1] 'एक परमाणु वेक्टर लौटाता है,' tbl_df (mtcars) [, 1] '1 कॉलम के साथ एक (स्थानीय)' data.frame 'देता है। यदि इस परवाह नहीं की जाती है तो यह सूक्ष्म अंतर अप्रत्याशित व्यवहार कर सकता है। मैं '[[' 'tbl_df का उपयोग करते समय सिंगल कॉलम निकालने का सुझाव देता हूं (जो हमेशा एक वेक्टर निकालेगा)। –

संबंधित मुद्दे