खोज…
चर, डेटा संरचना और बुनियादी संचालन
आर में, डेटा ऑब्जेक्ट का नाम डेटा संरचनाओं का उपयोग करके हेरफेर किया जाता है। वस्तुओं के नाम को "चर" कहा जा सकता है, हालांकि उस शब्द का आधिकारिक आर प्रलेखन में कोई विशिष्ट अर्थ नहीं है। R नाम केस संवेदी हैं और इसमें अल्फ़ान्यूमेरिक वर्ण ( az
, Az
, 0-9
), dot / period ( .
) और underscore ( _
) हो सकते हैं। डेटा संरचनाओं के लिए नाम बनाने के लिए, हमें निम्नलिखित नियमों का पालन करना होगा:
नाम जो एक अंक या अंडरस्कोर (उदाहरण
1a
) से शुरू होते हैं, या वे नाम जो मान्य संख्यात्मक अभिव्यक्तियाँ हैं (जैसे.11
), या डैश के साथ नाम ('-') या रिक्त स्थान केवल तभी उपयोग किए जा सकते हैं जब उन्हें उद्धृत किया जाता है:`1a`
और`.11`
। नाम के साथ मुद्रित किया जाएगा backticks:list( '.11' ="a") #$`.11` #[1] "a"
अल्फ़ान्यूमेरिक वर्णों, बिंदुओं और अंडरस्कोर के अन्य सभी संयोजनों को स्वतंत्र रूप से उपयोग किया जा सकता है, जहां बैकटिक्स के साथ या बिना एक ही ऑब्जेक्ट के संदर्भ।
जिन नामों से शुरुआत होती है
.
सिस्टम नाम माना जाता है और हमेशाls()
-function का उपयोग करके दिखाई नहीं देता है।
एक चर नाम में वर्णों की संख्या पर कोई प्रतिबंध नहीं है।
वैध वस्तु नामों में से कुछ उदाहरण हैं: foobar
, foo.bar
, foo_bar
, .foobar
आर में, चर को असाइन किया गया मान infix- असाइनमेंट ऑपरेटर <-
का उपयोग करके दिया जाता है। ऑपरेटर =
उपयोग चर को मान प्रदान करने के लिए भी किया जा सकता है, हालाँकि इसका उचित उपयोग फ़ंक्शन कॉल में पैरामीटर नाम के साथ मूल्यों को जोड़ने के लिए है। ध्यान दें कि ऑपरेटरों के आसपास रिक्त स्थान छोड़ने से उपयोगकर्ताओं के लिए भ्रम पैदा हो सकता है। अभिव्यक्ति a<-1
को एक तार्किक तुलना ( a < -1
) के बजाय असाइनमेंट ( a <- 1
) के रूप में रखा गया है।
> foo <- 42
> fooEquals = 43
इसलिए foo
को 42
का मान दिया गया है। कंसोल के भीतर टाइपिंग foo
42
आउटपुट करेगा, जबकि fooEquals
टाइप 43
आउटपुट करेगा।
> foo
[1] 42
> fooEquals
[1] 43
निम्न आदेश x
नाम वाले चर का मान प्रदान करता है और एक साथ मूल्य प्रिंट करता है:
> (x <- 5)
[1] 5
# actually two function calls: first one to `<-`; second one to the `()`-function
> is.function(`(`)
[1] TRUE # Often used in R help page examples for its side-effect of printing.
->
का उपयोग करके चर को असाइनमेंट बनाना भी संभव है।
> 5 -> x
> x
[1] 5
>
डेटा संरचनाओं के प्रकार
लंबाई के आर वैक्टर में स्केलर की तरह कोई स्केलर डेटा प्रकार नहीं होते हैं।
- क्षेत्र: परमाणु वैक्टर समान श्रेणी की वस्तुओं का अनुक्रम होना चाहिए। संख्याओं का अनुक्रम, या तार्किकों का अनुक्रम या वर्णों का अनुक्रम।
v <- c(2, 3, 7, 10)
,v2 <- c("a", "b", "c")
दोनों वैक्टर हैं। - मैट्रिक्स: संख्याओं, तार्किक या वर्णों का एक मैट्रिक्स।
a <- matrix(data = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), nrow = 4, ncol = 3, byrow = F)
। वैक्टर की तरह, मैट्रिक्स समान श्रेणी के तत्वों से बना होना चाहिए। मैट्रिक्स की पंक्तियों और स्तंभों से तत्वों को निकालने के लिए निर्दिष्ट किया जाना चाहिए:a[1,2]
रिटर्न[1] 5
जो कि पहली पंक्ति, दूसरे कॉलम का तत्व है। - सूची: विभिन्न तत्वों की
mylist <- list (course = 'stat', date = '04/07/2009', num_isc = 7, num_cons = 6, num_mat = as.character(c(45020, 45679, 46789, 43126, 42345, 47568, 45674)), results = c(30, 19, 29, NA, 25, 26 ,27) )
। सूची से तत्वों को निकालना नाम से किया जा सकता है (यदि सूची का नाम है) या सूचकांक द्वारा। दिए गए उदाहरण मेंmylist$results
औरmylist[[6]]
एक ही तत्व प्राप्त करता है। चेतावनी: यदि आपmylist[6]
प्रयास करते हैं, तो अभ्यस्त आपको त्रुटि नहीं देगा, लेकिन यह एक सूची के रूप में परिणाम निकालता है। जबकिmylist[[6]][2]
की अनुमति है (यह आपको 19 देता है),mylist[6][2]
आपको एक त्रुटि देता है। - data.frame: स्तंभों के साथ ऑब्जेक्ट जो समान लंबाई के वैक्टर हैं, लेकिन (संभवतः) विभिन्न प्रकार के। वे मैट्रिस नहीं हैं।
exam <- data.frame(matr = as.character(c(45020, 45679, 46789, 43126, 42345, 47568, 45674)), res_S = c(30, 19, 29, NA, 25, 26, 27), res_O = c(3, 3, 1, NA, 3, 2, NA), res_TOT = c(30,22,30,NA,28,28,27))
। स्तम्भों को नामexam$matr
,exam[, 'matr']
या सूचकांकexam[1]
,exam[,1]
द्वारा पढ़ा जा सकता है। पंक्तियों को नामexam['rowname', ]
या सूचकांकexam[1,]
exam['rowname', ]
द्वारा भी पढ़ा जा सकता है। डेटाफ्रेम वास्तव में सिर्फ एक विशेष संरचना (पंक्ति-विशेषता और समान लंबाई वाले घटक) के साथ सूचीबद्ध होते हैं
आम संचालन और कुछ सावधानी सलाह
डिफ़ॉल्ट संचालन तत्व द्वारा तत्व किए जाते हैं। देखें ?Syntax
ऑपरेटर पूर्वता के नियमों के लिए ?Syntax
। अधिकांश ऑपरेटरों (और बेस आर में अन्य कार्य) में रीसाइक्लिंग नियम हो सकते हैं जो असमान लंबाई के तर्क देते हैं। इन वस्तुओं को देखते हुए:
उदाहरण वस्तुओं
> a <- 1
> b <- 2
> c <- c(2,3,4)
> d <- c(10,10,10)
> e <- c(1,2,3,4)
> f <- 1:6
> W <- cbind(1:4,5:8,9:12)
> Z <- rbind(rep(0,3),1:3,rep(10,3),c(4,7,1))
कुछ वेक्टर ऑपरेशन
> a+b # scalar + scalar
[1] 3
> c+d # vector + vector
[1] 12 13 14
> a*b # scalar * scalar
[1] 2
> c*d # vector * vector (componentwise!)
[1] 20 30 40
> c+a # vector + scalar
[1] 3 4 5
> c^2 #
[1] 4 9 16
> exp(c)
[1] 7.389056 20.085537 54.598150
कुछ वेक्टर ऑपरेशन चेतावनी!
> c+e # warning but.. no errors, since recycling is assumed to be desired.
[1] 3 5 7 6
Warning message:
In c + e : longer object length is not a multiple of shorter object length
R यह बताता है कि यह क्या कर सकता है और फिर रिक्त वेक्टर को भरने के लिए पुन: उपयोग करता है ... चेतावनी केवल इसलिए दी गई क्योंकि दोनों वैक्टर में लंबाई है जो वास्तव में गुणक नहीं हैं। c + f # कोई चेतावनी नहीं।
कुछ मैट्रिक्स ऑपरेशन चेतावनी!
> Z+W # matrix + matrix #(componentwise)
> Z*W # matrix* matrix#(Standard product is always componentwise)
एक मैट्रिक्स का उपयोग करने के लिए गुणा करें: V% *% W
> W + a # matrix+ scalar is still componentwise
[,1] [,2] [,3]
[1,] 2 6 10
[2,] 3 7 11
[3,] 4 8 12
[4,] 5 9 13
> W + c # matrix + vector... : no warnings and R does the operation in a column-wise manner
[,1] [,2] [,3]
[1,] 3 8 13
[2,] 5 10 12
[3,] 7 9 14
[4,] 6 11 16
"निजी" चर
R में किसी वैरिएबल या फंक्शन के नाम से एक प्रमुख डॉट को आमतौर पर यह बताने के लिए उपयोग किया जाता है कि वेरिएबल या फंक्शन को छिपाया जाना है।
तो, निम्नलिखित चर की घोषणा
> foo <- 'foo'
> .foo <- 'bar'
और फिर ऑब्जेक्ट्स को सूचीबद्ध करने के लिए ls
फ़ंक्शन का उपयोग करना केवल पहली वस्तु दिखाएगा।
> ls()
[1] "foo"
हालाँकि, all.names = TRUE
पास कर रहे हैं। all.names = TRUE
'निजी' चर दिखाएगा
> ls(all.names = TRUE)
[1] ".foo" "foo"