जवाबों:
तकनीकी तौर पर सूचियों हैं , वैक्टर, हालांकि बहुत कम है कि इस शब्द का प्रयोग करेंगे। "सूची" कई तरीकों में से एक है, दूसरों के साथ "तार्किक", "चरित्र", "संख्यात्मक", "पूर्णांक"। जिसे आप वैक्टर कह रहे हैं, वह कठोर आर पार्लियामेंट में "परमाणु वैक्टर" हैं:
aaa <- vector("list", 3)
is.list(aaa) #TRUE
is.vector(aaa) #TRUE
सूची एक "पुनरावर्ती" प्रकार (वेक्टर की) हैं जबकि परमाणु वैक्टर नहीं हैं:
is.recursive(aaa) # TRUE
is.atomic(aaa) # FALSE
आप डेटा ऑब्जेक्ट्स को विभिन्न कार्यों के साथ संसाधित करते हैं, जो इस बात पर निर्भर करते हैं कि वे पुनरावर्ती, परमाणु या आयामी विशेषताएँ (मैट्रिसेस और सरणियाँ) हैं या नहीं। हालांकि, मुझे यकीन नहीं है कि विभिन्न डेटा संरचनाओं के "फायदे और नुकसान" की चर्चा एसओ के लिए पर्याप्त रूप से केंद्रित प्रश्न है। टॉमी ने जो कहा, उसे जोड़ने के लिए, सूची में अन्य वैक्टरों की एक मनमानी संख्या रखने में सक्षम होने के अलावा, डेटाफ्रेम की उपलब्धता है जो एक विशेष प्रकार की सूची है जिसमें एक आयामी विशेषता है जो इसकी संरचना को परिभाषित करती है। मेट्रिसेस और सरणियों के विपरीत जो वास्तव में परमाणु वस्तुओं को मोड़ रहे हैं, डेटाफ्रेम अलग-अलग प्रकारों को शामिल कर सकते हैं जिनमें कारक प्रकार शामिल हैं।
वहाँ भी चेतावनी है कि जब नाम के अलावा अन्य विशेषताएँ हैं तो is.vector
फ़ंक्शन वापस आ जाएगा FALSE
। देखें: वेक्टर क्या है?
सूची "पुनरावर्ती" हैं। इसका मतलब यह है कि वे विभिन्न प्रकारों, यहां तक कि अन्य सूचियों के मूल्यों को शामिल कर सकते हैं:
x <- list(values=sin(1:3), ids=letters[1:3], sub=list(foo=42,bar=13))
x # print the list
x$values # Get one element
x[["ids"]] # Another way to get an element
x$sub$foo # Get sub elements
x[[c(3,2)]] # Another way (gets 13)
str(x) # A "summary" of the list's content
डेटा सेट का प्रतिनिधित्व करने के लिए R में सूचियों का उपयोग किया जाता है: data.frame
कक्षा अनिवार्य रूप से एक सूची है जहां प्रत्येक तत्व एक विशिष्ट प्रकार का एक स्तंभ है।
मॉडल का प्रतिनिधित्व करते समय एक और उपयोग होता है: lm
एक सूची से परिणाम जिसमें उपयोगी वस्तुओं का एक गुच्छा होता है।
d <- data.frame(a=11:13, b=21:23)
is.list(d) # TRUE
str(d)
m <- lm(a ~ b, data=d)
is.list(m) # TRUE
str(m)
परमाणु वैक्टर (गैर-सूची जैसे, लेकिन संख्यात्मक, तार्किक और चरित्र) उपयोगी होते हैं क्योंकि सभी तत्व एक ही प्रकार के होते हैं। इससे उनमें बहुत तेजी से हेरफेर होता है।
किसी के रूप में जो आर में बस गया है, लेकिन एक सी / जावा / रूबी / पीएचपी / पायथन पृष्ठभूमि से आता है, यहां मैं इसके बारे में कैसे सोचता हूं।
A list
वास्तव में एक सरणी + हैशमैप है। यह एक PHP साहचर्य सरणी है।
> foo = list(bar='baz')
> foo[1]
'baz'
> foo$bar
'baz'
> foo[['bar']]
'baz'
A vector
एक निश्चित प्रकार की सरणी / सूची है। इसे एक लिंक्ड लिस्ट की तरह समझें - क्योंकि डिसिमिलर आइटम्स को लिस्टेड लिस्ट में डालना एक एंटी-पैटर्न वैसे भी है। यह उसी अर्थ में एक वेक्टर है जो SIMD / MMX / वेक्टर इकाइयों शब्द का उपयोग करता है।
यह और इसी तरह के परिचयात्मक सवालों के जवाब http://www.burns-stat.com/pages/Tutor/hints_R_beb.html पर दिए गए हैं
यह एक सौम्य परिचय माना जाता है जो आपको आर के साथ जल्दी से जल्दी उठने और दौड़ने का मौका देता है। कुछ हद तक यह सफल होता है।
--- संपादित करें: -
आगे समझाने का प्रयास; उपरोक्त संदर्भ से उद्धृत।
परमाणु वेक्टर
परमाणु वेक्टर की तीन किस्में हैं जिनसे आपका सामना होने की संभावना है:
- "सांख्यिक"
- "तार्किक"
- "चरित्र"
परमाणु वैक्टर के बारे में याद रखने वाली बात यह है कि उनमें से सभी तत्व केवल एक प्रकार के हैं।
सूची
सूची में विभिन्न घटकों में विभिन्न प्रकार के आइटम हो सकते हैं। एक सूची के एक घटक को एक और सूची, एक परमाणु वेक्टर (और अन्य चीजें) होने की अनुमति है।
कृपया इस लिंक को भी देखें ।
सूची में वर्ण, संख्यात्मक, तार्किक एट जैसे कई डेटा प्रकार शामिल हैं। लेकिन वेक्टर में केवल इसी प्रकार के डेटा होते हैं। पूर्व के लिए:
scores <- c(20,30,40,50)
student <- c("A","B","C","D")
sc_log <- c(TRUE,FALSE,FALSE,TRUE)
सूची के लिए:
mylist <- list(scores,student,sc_log)
# search for class of mylist vector
#check structure of mylist using str() function.
str(mylist)
[1] list of 3
[1] $:num [1:4] 20 30 40 50
[2] $:chr [1:4] "A""B""C""D"
[3] $:log [1:4] TRUE FALSE FALSE TRUE
जिसका अर्थ है कि mylist में कई डेटा प्रकार जैसे संख्यात्मक, वर्ण और तार्किक युक्त सूची। लेकिन वेक्टर में सभी तत्वों में एकल डेटा प्रकार होंगे - वेक्टर
पूर्व के लिए:
वेक्टर के लिए:
vector1 <- c(1,2,3,4)
Class(vector1)
[1] "Numeric"
#which means all elements of vector containing single data type that is numeric only.
key
का उपयोग करके वैक्टर में एस कर सकते हैंnames
।