मुख्य सामग्री पर जाएं

सभी स्तरों के लिए 40 R प्रोग्रामिंग इंटरव्यू सवाल और जवाब

सभी स्तरों के लिए 40 बुनियादी R प्रोग्रामिंग इंटरव्यू सवाल और उनके जवाब जानें: एंट्री-लेवल, इंटरमीडिएट, और एडवांस्ड सवाल।
अपडेट किया गया 25 सित॰ 2026  · 15 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

R इंटरव्यू में सफल होने की संभावना बढ़ाने के लिए, अगर आप नौकरी की तलाश में हैं तो पहले से संभावित सवालों को जान लेना फायदेमंद रहता है—या अगर आप हायरिंग मैनेजर या रिक्रूटर हैं, तो कौन से सवाल पूछे जा सकते हैं।

यह लेख सभी वरिष्ठता स्तरों के लिए 40 बुनियादी R प्रोग्रामिंग इंटरव्यू सवालों और उनके उत्तरों पर चर्चा करता है, साथ ही कुछ सामान्य इंटरव्यू सवाल भी शामिल हैं। सुविधा के लिए, सभी तकनीकी सवालों को तीन स्तरों में बांटा गया है: एंट्री-लेवल, इंटरमीडिएट, और एडवांस्ड सवाल।

R प्रोग्रामिंग इंटरव्यू की तैयारी के लिए अतिरिक्त संसाधन के रूप में, निम्नलिखित उपयोगी ब्लॉग और कोर्स पर विचार करें:

सामान्य R प्रोग्रामिंग इंटरव्यू सवाल

R इंटरव्यू की शुरुआत में, इंटरव्यूअर उम्मीदवार से R के साथ उनके समग्र अनुभव पर कुछ सामान्य, गैर-तकनीकी सवाल पूछ सकता/सकती है। उदाहरण के लिए:

  • आप R में कब से काम कर रहे/रही हैं?
  • आप R में किस तरह के कार्य करते/करती हैं?
  • आप R में अपनी दक्षता के स्तर का आकलन कैसे करते/करती हैं?

अगर आप नौकरी की तलाश में हैं, तो इन और ऐसे ही सवालों पर पहले से सोचें और अपने जवाब तैयार रखें। अगर आपके पास अभी तक R में वास्तविक कार्यानुभव नहीं है तो चिंता न करें: R प्रोग्रामिंग में अपनी इंटर्नशिप या अपनी पढ़ाई के दौरान पूरे किए गए व्यक्तिगत या समूह R प्रोजेक्ट्स का वर्णन करना पर्याप्त है।

साथ ही, अगर आप एंट्री-लेवल पद के लिए इंटरव्यू दे रहे हैं, तो आपका इंटरव्यूअर जरूरी नहीं कि R में व्यापक (या कोई भी) कार्यानुभव की अपेक्षा करे। याद रखें कि आपको इंटरव्यू के लिए बुलाया गया है, यानी कंपनी को फिर भी आपका रिज़्यूमे आकर्षक लगा।

एंट्री-लेवल R प्रोग्रामिंग इंटरव्यू सवाल

आइए उन कुछ बुनियादी तकनीकी R इंटरव्यू सवालों से शुरू करें जिनका सामना आपको संभावित नियोक्ता से हो सकता है। इनके लिए आपको बुनियादी ज्ञान और R के प्रयोग का कुछ व्यावहारिक अनुभव होना चाहिए।

1. R क्या है, और इसकी मुख्य विशेषताएँ क्या हैं?

R एक प्रोग्रामिंग भाषा और एनवायरनमेंट है, जो डेटा साइंस समस्याओं को हल करने के लिए व्यापक रूप से उपयोग होती है और विशेष रूप से सांख्यिकीय कंप्यूटिंग और डेटा विज़ुअलाइजेशन के लिए डिज़ाइन की गई है। इसकी मुख्य विशेषताएँ हैं:

  • ओपन सोर्स
  • इंटरप्रेटेड (अर्थात यह फंक्शनल और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग दोनों का समर्थन करती है)
  • डेटा साइंस पैकेजों के बड़े संग्रह के कारण अत्यंत एक्स्टेंसिबल
  • फंक्शनल और लचीली (उपयोगकर्ता अपने स्वयं के फ़ंक्शन परिभाषित कर सकते हैं, साथ ही मौजूदा फ़ंक्शनों के विभिन्न मानकों को ट्यून कर सकते हैं)
  • कई ऑपरेटिंग सिस्टम्स के साथ संगत
  • अन्य प्रोग्रामिंग भाषाओं और फ्रेमवर्क्स के साथ आसानी से एकीकृत
  • शक्तिशाली सांख्यिकीय कंप्यूटिंग की सुविधा
  • प्रकाशन-स्तरीय चार्ट बनाने के लिए विविध डेटा विज़ुअलाइजेशन टूल्स
  • कमांड-लाइन इंटरफेस से सुसज्जित
  • मजबूत ऑनलाइन समुदाय का समर्थन

2. R का उपयोग करने की कुछ कमियाँ क्या हैं?

  • गैर-सहज सिंटैक्स और इसलिए प्रोग्रामिंग के शुरुआती लोगों के लिए खड़ी सीखने की वक्र
  • सापेक्षिक रूप से धीमी
  • मेमोरी का अक्षम उपयोग
  • पैकेजों का असंगत और अक्सर कठिन-पढ़ने योग्य प्रलेखन
  • कुछ पैकेज निम्न गुणवत्ता के हैं या ठीक से मेंटेन नहीं हैं
  • ओपन-सोर्स प्रकृति के कारण संभावित सुरक्षा चिंताएँ

3. R में कुछ बुनियादी डेटा टाइप्स सूचीबद्ध करें और परिभाषित करें।

R में कुछ डेटा टाइप्स होते हैं, जिनमें शामिल हैं: 

  1. Numeric—दशमलव संख्याएँ।
  2. Integer—पूर्णांक।
  3. Character—एक अक्षर, संख्या, या प्रतीक, या उनका कोई भी संयोजन, जिन्हें डबल या सिंगल उद्धरण चिह्नों में बंद किया गया हो।
  4. Factor—पूर्वनिर्धारित संभावित मानों के सेट से श्रेणियाँ, जिनमें अक्सर आंतरिक क्रम होता है।
  5. Logical—बूलियन मान TRUE और FALSE, जो आंतरिक रूप से क्रमशः 1 और 0 के रूप में प्रदर्शित होते हैं।

4. R में कुछ बुनियादी डेटा स्ट्रक्चर्स सूचीबद्ध करें और परिभाषित करें।

  1. Vector—एक-आयामी डेटा स्ट्रक्चर, जिसका उपयोग समान डेटा टाइप के मानों को संग्रहीत करने के लिए किया जाता है।
  2. List—बहु-आयामी डेटा स्ट्रक्चर, जिसका उपयोग किसी भी डेटा टाइप और/या अन्य डेटा स्ट्रक्चर्स के मानों को संग्रहीत करने के लिए किया जाता है।
  3. Matrix—द्वि-आयामी डेटा स्ट्रक्चर, जिसका उपयोग समान डेटा टाइप के मानों को संग्रहीत करने के लिए किया जाता है।
  4. Data frame—द्वि-आयामी डेटा स्ट्रक्चर, जिसमें किसी भी डेटा टाइप के मान संग्रहीत किए जा सकते हैं, लेकिन प्रत्येक कॉलम को समान डेटा टाइप के मानों को ही संग्रहीत करना चाहिए।

5. R में डेटा कैसे इम्पोर्ट करें?

बेस R डेटा इम्पोर्ट करने के लिए आवश्यक फ़ंक्शन्स प्रदान करता है:

  • read.table()—बेस R का सबसे सामान्य फ़ंक्शन, जो किसी भी तरह के फील्ड सेपरेटर (जैसे |) के साथ सारणीबद्ध डेटा लेता है।

  • read.csv()—कॉमा-सेपरेटेड वैल्यूज़ (CSV) फाइलें जिनमें दशमलव सेपरेटर . होता है।

  • read.csv2()—सेमीकोलन-सेपरेटेड वैल्यूज़ फाइलें जिनमें दशमलव सेपरेटर , होता है।

  • read.delim()—टैब-सेपरेटेड वैल्यूज़ (TSV) फाइलें जिनमें दशमलव सेपरेटर . होता है।

  • read.delim2()—टैब-सेपरेटेड वैल्यूज़ (TSV) फाइलें जिनमें दशमलव सेपरेटर , होता है।

व्यवहार में, इनमें से कोई भी फ़ंक्शन किसी भी तरह के फील्ड और दशमलव सेपरेटर वाली सारणीबद्ध डेटा फाइलों को इम्पोर्ट करने के लिए उपयोग किया जा सकता है: निर्दिष्ट फाइल फ़ॉर्मैट के लिए इनका उपयोग केवल परंपरा और डिफ़ॉल्ट सेटिंग्स का मामला है। उदाहरण के लिए, पहले फ़ंक्शन की सिंटैक्स है: read.table(file, header = FALSE, sep = "", dec = ".")। अन्य फ़ंक्शनों में भी वही पैरामीटर्स होते हैं, बस डिफ़ॉल्ट सेटिंग्स अलग होती हैं, जिन्हें हमेशा स्पष्ट रूप से ओवरराइड किया जा सकता है।

टाइडिवर्स के पैकेज readr और readxl विशेष फाइल फ़ॉर्मैट्स के लिए कुछ और फ़ंक्शन्स प्रदान करते हैं। इन प्रत्येक फ़ंक्शनों को विभिन्न वैकल्पिक पैरामीटर्स सेट करके और भी फाइन-ट्यून किया जा सकता है।

readr

  • read_tsv()—टैब-सेपरेटेड वैल्यूज़ (TSV) फाइलें।

  • read_fwf()—फिक्स्ड-विथ फाइलें।

  • read_log()—वेब लॉग फाइलें।

  • read_table(), read_csv(), read_csv2(), और read_delim()—बेस R फ़ंक्शन्स के समतुल्य।

readxl

  • read_excel()—Excel फाइलें।

  • read_csv()—बेस R फ़ंक्शन के समतुल्य।

R में डेटा लोडिंग को और गहराई से समझने के लिए, इस ट्यूटोरियल को देखें: R में डेटा कैसे इम्पोर्ट करें।

6. R में पैकेज क्या होता है, और पैकेज कैसे इंस्टॉल और लोड करें?

R पैकेज फ़ंक्शन्स, कोड, डेटा, और डाक्यूमेंटेशन का एक संग्रह होता है, जो R प्रोग्रामिंग भाषा का विस्तार प्रस्तुत करता है और विशेष प्रकार के कार्यों को हल करने के लिए डिज़ाइन किया गया है। R कुछ प्रीइंस्टॉल्ड पैकेजों के साथ आता है, और अन्य पैकेज उपयोगकर्ता रिपॉजिटरीज़ से इंस्टॉल कर सकते हैं। हजारों विभिन्न R पैकेजों को संग्रहीत करने वाली सबसे लोकप्रिय केंद्रीकृत रिपॉजिटरी Comprehensive R Archive Network (CRAN) कहलाती है।

CRAN से सीधे R पैकेज इंस्टॉल करने के लिए, हमें install.packages() फ़ंक्शन में उद्धरण चिह्नों में पैकेज का नाम पास करना होता है, जैसे: install.packages("package_name")। एक ही बार में एक से अधिक पैकेज इंस्टॉल करने के लिए, पैकेज नामों का एक कैरेक्टर वेक्टर उपयोग करें, जैसे: install.packages(c("package_name_1", "package_name_2")। किसी R पैकेज को मैन्युअल रूप से इंस्टॉल करने के लिए, पहले पैकेज को अपनी कंप्यूटर पर zip फाइल के रूप में डाउनलोड करें और फिर install.packages() function चलाएँ:

install.packages("path_to_the_locally_stored_zipped_package_file", repos=NULL, type="source")

इंस्टॉल किए गए R पैकेज को कार्यशील R एनवायरनमेंट में लोड करने के लिए, हम library() या require() में से किसी एक का उपयोग कर सकते हैं। दोनों पैकेज का नाम बिना उद्धरण चिह्नों के लेते हैं और पैकेज लोड करते हैं, उदाहरण के लिए library(caret)। हालांकि, जब आवश्यक पैकेज नहीं मिलता, तो इनका व्यवहार अलग होता है: library() एक त्रुटि फेंकता है और प्रोग्राम निष्पादन रोक देता है, जबकि require() एक चेतावनी देता है और प्रोग्राम निष्पादन जारी रखता है।

7. R में डेटा फ्रेम कैसे बनाया जाए?

1. समान लंबाई वाले एक या अधिक वेक्टर से—data.frame() फ़ंक्शन का उपयोग करके:

df <- data.frame(vector_1, vector_2)

2. मैट्रिक्स से—data.frame() फ़ंक्शन का उपयोग करके:

df <- data.frame(my_matrix)

3. समान लंबाई वाली वेक्टरों की लिस्ट से—data.frame() फ़ंक्शन का उपयोग करके:

df <- data.frame(list_of_vectors)

4. अन्य डेटा फ्रेम्स से:

  • डेटा फ्रेम्स को हॉरिज़ॉन्टली जोड़ने के लिए (केवल तब जब डेटा फ्रेम्स में पंक्तियों की संख्या समान हो, और रिकॉर्ड्स समान क्रम में समान हों) —cbind() फ़ंक्शन का उपयोग करें:

df <- cbind(df1, df2)
  • डेटा फ्रेम्स को वर्टिकली जोड़ने के लिए (केवल तब जब समान क्रम में, समान नाम वाले और समान डेटा टाइप के कॉलम्स की संख्या बराबर हो) —rbind() फ़ंक्शन का उपयोग करें:

df <- rbind(df1, df2)

8. R में डेटा फ्रेम में नया कॉलम कैसे जोड़ा जाए?

  1. $ सिंबल का उपयोग करके:
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df$col_3 <- c(5, 1, 18, 16)
print(df)

आउटपुट:

  col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16
  1. स्क्वायर ब्रैकेट्स का उपयोग करके:
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df["col_3"] <- c(5, 1, 18, 16)
print(df)

आउटपुट:

  col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16
  1. cbind() फ़ंक्शन का उपयोग करके:

df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
​
df <- cbind(df, col_3=c(5, 1, 18, 16))
print(df)

आउटपुट:

 col_1 col_2
1    10     a
2    11     b
3    12     c
4    13     d
  col_1 col_2 col_3
1    10     a     5
2    11     b     1
3    12     c    18
4    13     d    16

इन तीनों ही तरीकों में, हम एक एकल मान या एक वेक्टर असाइन कर सकते हैं, या मौजूदा कॉलम्स (या अन्य डेटा फ्रेम्स) के आधार पर नया कॉलम कैलकुलेट कर सकते हैं।

9. R में डेटा फ्रेम से कॉलम्स कैसे हटाएँ?

1. टाइडिवर्स के dplyr पैकेज के select() फ़ंक्शन का उपयोग करके। हटाने वाले प्रत्येक कॉलम के नाम के पहले माइनस साइन लगाएँ:

df <- select(df, -col_1, -col_3)

यदि हटाने के लिए बहुत अधिक कॉलम हैं, तो बेहतर है कि शेष कॉलम्स को रखें बजाय इच्छित कॉलम्स को हटाने के। इस स्थिति में, सिंटैक्स समान है, लेकिन रखने वाले कॉलम्स के नामों से पहले माइनस साइन नहीं लगता:

df <- select(df, col_2, col_4)

2. बेस R के बिल्ट-इन subset() फ़ंक्शन का उपयोग करके। यदि केवल एक कॉलम हटाना है, तो फ़ंक्शन के select पैरामीटर में कॉलम नाम के पहले माइनस साइन लगाएँ। एक से अधिक कॉलम हटाने के लिए, इस पैरामीटर में माइनस लगे कॉलम नामों का वेक्टर पास करें:

df <- subset(df, select=-col_1)
df <- subset(df, select=-c(col_1, col_3))

यदि हटाने के लिए बहुत अधिक कॉलम हैं, तो बेहतर है कि शेष कॉलम्स को रखा जाए। इस स्थिति में, सिंटैक्स समान है, लेकिन माइनस साइन न जोड़ें:

df <- subset(df, select=col_2)
df <- subset(df, select=c(col_2, col_4))

10. R में फैक्टर क्या होता है?

R में फैक्टर एक विशिष्ट डेटा टाइप है जो पूर्वनिर्धारित संभावित मानों के सेट से श्रेणियाँ (या स्तर) स्वीकार करता है। ये श्रेणियाँ देखने में कैरेक्टर जैसी लगती हैं, लेकिन आंतरिक रूप से इन्हें इंटिजर के रूप में संग्रहीत किया जाता है। प्रायः ऐसी श्रेणियों का एक आंतरिक क्रम होता है। उदाहरण के लिए, किसी डेटा फ्रेम का वह कॉलम जिसमें लिकर्ट स्केल के विकल्प हों ("पूरी तरह सहमत", "सहमत", "कुछ हद तक सहमत", "न तो सहमत न असहमत", "कुछ हद तक असहमत", "असहमत", "पूरी तरह असहमत")—उसे इस आंतरिक क्रम को कैप्चर करने और श्रेणीबद्ध प्लॉट्स में इसे ठीक से दिखाने के लिए फैक्टर टाइप का होना चाहिए।

11. RStudio क्या है?

RStudio एक ओपन-सोर्स IDE (इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट) है, जो R प्रोग्रामिंग भाषा (संस्करण 3.0.1 से) के साथ काम करने के लिए एक लोकप्रिय ग्राफिकल फ्रंट-एंड है। इसके कई उपयोगी फ़ीचर्स हैं, जो इसे R उपयोगकर्ताओं के बीच बहुत लोकप्रिय बनाते हैं:

  • उपयोगकर्ता-अनुकूल
  • लचीला
  • बहुउद्देश्यीय
  • रीयूजेबल स्क्रिप्ट बनाने की सुविधा
  • ऑपरेशनल हिस्ट्री को ट्रैक करता है
  • कोड ऑटोकम्प्लीट करता है
  • किसी भी ऑब्जेक्ट पर विस्तृत और व्यापक सहायता
  • सभी इम्पोर्टेड डेटा और बनाए गए ऑब्जेक्ट्स तक आसान पहुँच
  • टर्मिनल और कंसोल के बीच आसानी से स्विच करना
  • प्लॉट प्रीव्यू करने की सुविधा
  • प्रोजेक्ट निर्माण और साझा करने का कुशल समर्थन
  • अन्य प्रोग्रामिंग भाषाओं (Python, SQL, आदि) के साथ उपयोग किया जा सकता है

RStudio क्या है, इसे कैसे इंस्टॉल करें और उपयोग शुरू करें—इस पर अधिक जानने के लिए RStudio ट्यूटोरियल देखें।

12. R Markdown क्या है?

R Markdown एक मुफ्त और ओपन-सोर्स R पैकेज है, जो डेटा साइंस प्रोजेक्ट्स बनाने के लिए एक ऑथरिंग फ्रेमवर्क प्रदान करता है। इसके माध्यम से हम एक .rmd फाइल लिख सकते हैं जिसमें नैरेटिव, कोड, और डेटा प्लॉट्स शामिल हों, और फिर इस फाइल को चुने हुए आउटपुट फ़ॉर्मैट में रेंडर कर सकते हैं। R Markdown की मुख्य विशेषताएँ हैं:

  • नतीजतन बने दस्तावेज़ साझा करने योग्य, पूरी तरह पुनरुत्पादन योग्य, और प्रकाशन-स्तरीय गुणवत्ता के होते हैं।
  • स्थिर और डायनेमिक आउटपुट्स और फ़ॉर्मैट्स की विस्तृत रेंज, जैसे HTML, PDF, Microsoft Word, इंटरैक्टिव डॉक्यूमेंट्स, डैशबोर्ड्स, रिपोर्ट्स, आर्टिकल्स, किताबें, प्रेजेंटेशन्स, एप्लिकेशन्स, वेबसाइट्स, रीयूजेबल टेम्प्लेट्स, आदि।
  • वर्ज़न कंट्रोल ट्रैकिंग में आसानी।
  • R, Python, और SQL सहित कई प्रोग्रामिंग भाषाओं का समर्थन।

13. R में यूज़र-डिफ़ाइंड फ़ंक्शन कैसे बनाएँ?

R में यूज़र-डिफ़ाइंड फ़ंक्शन बनाने के लिए, हम function कीवर्ड और निम्नलिखित सिंटैक्स का उपयोग करते हैं:

function_name <- function(parameters){
    function body 
}
  1. फ़ंक्शन नाम—उस फ़ंक्शन ऑब्जेक्ट का नाम जिसे परिभाषा के बाद फ़ंक्शन कॉल करने के लिए उपयोग किया जाएगा।
  2. फ़ंक्शन पैरामीटर्स—कोष्ठकों के अंदर कॉमा से अलग किए गए वेरिएबल्स, जिन्हें हर बार फ़ंक्शन कॉल करने पर वास्तविक आर्ग्युमेंट मान सेट किए जाएँगे।
  3. फ़ंक्शन बॉडी—कर्ली ब्रैकेट्स में कोड का ब्लॉक, जिसमें हर कॉल पर इनपुट आर्ग्युमेंट्स पर पूर्वनिर्धारित क्रम में की जाने वाली ऑपरेशन्स होती हैं। आमतौर पर, फ़ंक्शन बॉडी में return() स्टेटमेंट (या स्टेटमेंट्स) होता है जो आउटपुट लौटाता है, या आउटपुट प्रिंट करने के लिए print() स्टेटमेंट (या स्टेटमेंट्स) होता है।

R में एक सरल यूज़र-डिफ़ाइंड फ़ंक्शन का उदाहरण:

my_function <- function(x, y){
    return(x + y)
}

14. R में कुछ लोकप्रिय डेटा विज़ुअलाइजेशन पैकेज सूचीबद्ध करें।

  • ggplot2—सबसे लोकप्रिय R डेटा विज़ुअलाइजेशन पैकेज, जो विविध प्रकार के प्लॉट बनाने की अनुमति देता है।
  • Lattice—मल्टीवेरिएट डेटा को कई प्लॉट्स के टाइल्ड पैनल (ट्रेलिस) के रूप में दिखाने के लिए।
  • Plotly—इंटरैक्टिव, प्रकाशन-स्तरीय चार्ट्स के लिए।
  • highcharter—आसान डायनेमिक प्लॉटिंग के लिए; कई लचीले फ़ीचर्स, प्लगइन्स, और थीम्स; एक ही फ़ंक्शन से विभिन्न R ऑब्जेक्ट्स का चार्टिंग संभव।
  • Leaflet—इंटरैक्टिव मैप्स बनाने के लिए।
  • ggvis—इंटरैक्टिव और अत्यधिक कस्टमाइज़ेबल प्लॉट्स बनाने के लिए, जिन्हें Shiny की इंफ्रास्ट्रक्चर का उपयोग करके किसी भी ब्राउज़र में एक्सेस किया जा सकता है।
  • patchwork—कई प्लॉट्स (आमतौर पर विभिन्न प्रकार के) को एक ही ग्राफ़िक पर संयोजित करने के लिए।

इंटरमीडिएट R प्रोग्रामिंग इंटरव्यू सवाल

अनुभवी प्रैक्टिशनर्स के लिए, संभव है कि इंटरव्यूअर कुछ ऐसे सवाल पूछे जो R के अधिक विस्तृत ज्ञान की मांग करते हों। यहाँ कुछ सवाल हैं जिनकी तैयारी करें:

15. R में किसी वेरिएबल को मान कैसे असाइन करें?

  1. असाइनमेंट ऑपरेटर <- का उपयोग करके, उदाहरण के लिए my_var <- 1—R में मान असाइन करने का सबसे आम तरीका।

  2. इक्वल ऑपरेटर = का उपयोग करके, उदाहरण के लिए my_var = 1—फ़ंक्शन डिफ़िनिशन के अंदर आर्ग्युमेंट्स को मान असाइन करने के लिए।

  3. राइटवर्ड असाइनमेंट ऑपरेटर -> का उपयोग करके, उदाहरण के लिए my_var -> 1—पाइप्स में उपयोग किया जा सकता है।

  4. ग्लोबल असाइनमेंट ऑपरेटर्स, लेफ्टवर्ड (<<-) या राइटवर्ड (->>) का उपयोग करके, उदाहरण के लिए my_var <<- 1—फ़ंक्शन डिफ़िनिशन के अंदर ग्लोबल वेरिएबल बनाने के लिए।

16. R में वेरिएबल्स का नाम रखने की आवश्यकताएँ क्या हैं?

  • वेरिएबल नाम अक्षरों, अंकों, डॉट्स, और अंडरस्कोर्स का संयोजन हो सकता है। इसमें अन्य कोई प्रतीक, जिनमें व्हाइट स्पेस भी शामिल है, नहीं हो सकता।

  • वेरिएबल नाम किसी अक्षर या डॉट से शुरू होना चाहिए।

  • यदि वेरिएबल नाम डॉट से शुरू होता है, तो उसके बाद अंक नहीं आ सकता।

  • R के रिज़र्व्ड शब्द (TRUE, for, NULL, आदि) वेरिएबल नाम के रूप में उपयोग नहीं किए जा सकते।

  • वेरिएबल नाम केस-सेंसिटिव होते हैं।

Writing Efficient R Code कोर्स में, R में कोड लिखने के और श्रेष्ठ अभ्यास मिलेंगे।

17. R में किस प्रकार के लूप्स होते हैं, और प्रत्येक प्रकार की सिंटैक्स क्या है?

1. For लूप—किसी अनुक्रम पर उसकी लंबाई के बराबर बार (जब तक break और/या next स्टेटमेंट्स उपयोग न हों) इटरेट करता है और उस अनुक्रम की प्रत्येक आइटम पर वही ऑपरेशन्स करता है। यह सबसे आम प्रकार का लूप है। R में for लूप की सिंटैक्स:

for (variable in sequence) {
    operations
}

2. While लूप—जब तक कोई पूर्वनिर्धारित लॉजिकल कंडीशन (या कई कंडीशन्स) पूरी नहीं हो जाती, वही ऑपरेशन्स करता रहता है—जब तक break और/या next स्टेटमेंट्स उपयोग न हों। for लूप्स के विपरीत, while लूप के इटरेशन की संख्या पहले से ज्ञात नहीं होती। while लूप चलाने से पहले हमें एक वेरिएबल (या कई) असाइन करना होता है और फिर हर इटरेशन पर लूप बॉडी में उसका मान अपडेट करना होता है। R में while लूप की सिंटैक्स:

variable assignment

while (logical condition) {
    operations
    variable update
}

3. Repeat लूप—जब तक कोई पूर्वनिर्धारित ब्रेक कंडीशन (या कई कंडीशन्स) पूरी नहीं हो जाती, वही ऑपरेशन्स दोहराता रहता है। ऐसी कंडीशन जोड़ने के लिए, repeat लूप में if-स्टेटमेंट का ब्लॉक होना चाहिए, जिसके बॉडी में break स्टेटमेंट शामिल हो। while लूप्स की तरह, repeat लूप के इटरेशन की संख्या पहले से ज्ञात नहीं होती। R में repeat लूप की सिंटैक्स:

repeat { 
    operations 
    if(break condition) {
        break
    }
}

आप R में लूप्स पर हमारे अलग ट्यूटोरियल में अधिक पढ़ सकते हैं।

18. R में डेटा को एग्रीगेट कैसे करें?

R में डेटा एग्रीगेट करने के लिए, हम aggregate() फ़ंक्शन का उपयोग करते हैं। इस फ़ंक्शन के मुख्य पैरामीटर्स (इसी क्रम में) हैं:

  • x—एग्रीगेट करने वाला डेटा फ्रेम।

  • by—ग्रुप करने के लिए फैक्टर्स की सूची।

  • FUN—प्रत्येक समूह के लिए सार-सांख्यिकी निकालने वाला एग्रीगेट फ़ंक्शन (जैसे mean, max, min, count, sum)।

19. R में डेटा को मर्ज कैसे करें?

1. cbind() फ़ंक्शन का उपयोग—केवल तब जब डेटा फ्रेम्स में पंक्तियों की संख्या समान हो, और रिकॉर्ड्स समान एवं एक ही क्रम में हों:

df <- cbind(df1, df2)

2. डेटा फ्रेम्स को वर्टिकली जोड़ने के लिए rbind() फ़ंक्शन—केवल तब जब समान क्रम में, समान नाम वाले और समान डेटा टाइप के कॉलम्स की संख्या बराबर हो:

df <- rbind(df1, df2)

3. सामान्य कॉलम (आमतौर पर ID कॉलम) के आधार पर डेटा फ्रेम्स मर्ज करने के लिए merge() फ़ंक्शन:

  • इनर जॉइन:
df <- merge(df1, df2, by="ID")
  • लेफ्ट जॉइन:
df <- merge(df1, df2, by="ID", all.x=TRUE)
  • राइट जॉइन:
df <- merge(df1, df2, by="ID", all.y=TRUE)
  • आउटर जॉइन:
df <- merge(df1, df2, by="ID", all=TRUE)

4. dplyr पैकेज के join() फ़ंक्शन का उपयोग करके सामान्य कॉलम (आमतौर पर ID) पर मर्ज करना:

df <- join(df1, df2, by="ID", type="type_of_join")

type पैरामीटर के मान हो सकते हैं: inner, left, right, या full।

20. R में स्ट्रिंग्स को कैसे जोड़ें (कॉनकैटिनेट) करें?

हम R में दो या अधिक स्ट्रिंग्स को paste() या cat() फ़ंक्शन्स से जोड़ सकते हैं। पहला तरीका अधिक लोकप्रिय है। दोनों फ़ंक्शन्स किसी भी संख्या में स्ट्रिंग्स लेते हैं और एक वैकल्पिक पैरामीटर sep (और कुछ अन्य वैकल्पिक पैरामीटर्स) भी ले सकते हैं—वह कैरेक्टर या कैरेक्टर्स का क्रम जो परिणामस्वरूप स्ट्रिंग में जुड़े हुए हिस्सों के बीच विभाजक होगा (डिफ़ॉल्ट रूप से एक स्पेस)।

21. R में द्वि-आयामी डेटा को ट्रांसपोज़ कैसे करें?

हम R में किसी डेटा फ्रेम या मैट्रिक्स को ट्रांसपोज़ कर सकते हैं ताकि कॉलम्स पंक्तियाँ बन जाएँ और पंक्तियाँ कॉलम्स। इसके लिए बेस R के t() फ़ंक्शन का उपयोग करें। उदाहरण:

df <- data.frame(col_1=c(10, 20, 30), col_2=c(11, 22, 33))
print(df)
​
transposed_df <- t(df)
print(transposed_df)

आउटपुट:

 col_1 col_2
1    10    11
2    20    22
3    30    33
      [,1] [,2] [,3]
col_1   10   20   30
col_2   11   22   33

22. R में कई ऑपरेशन्स को एक साथ चेन कैसे करें?

हम टाइडिवर्स द्वारा प्रदान किए गए पाइप ऑपरेटर (%>%) का उपयोग करके R में कई ऑपरेशन्स को चेन कर सकते हैं। इससे फ़ंक्शन्स की एक पाइपलाइन बनती है, जहाँ पहली फ़ंक्शन का आउटपुट दूसरी का इनपुट बनता है, और इसी तरह, जब तक पाइपलाइन समाप्त न हो। इससे अतिरिक्त वेरिएबल्स बनाने की आवश्यकता कम होती है और कोड की पठनीयता काफी बढ़ती है।

डेटा फ्रेम पर पाइप ऑपरेटर का उदाहरण:

df <- data.frame(a=1:4, b=11:14, c=21:24)
print(df)
​
df_new <- df %>% select(a, b) %>% filter(a > 2)
print(df_new)

आउटपुट:

 a  b  c
1 1 11 21
2 2 12 22
3 3 13 23
4 4 14 24
  a  b
1 3 12
2 4 13

23. R में किस प्रकार के डेटा प्लॉट बनाए जा सकते हैं?

डेटा विज़ुअलाइजेशन R प्रोग्रामिंग भाषा की मजबूत विशेषताओं में से एक है, इसलिए हम R में सभी प्रकार के डेटा प्लॉट बना सकते हैं:

  • सामान्य प्रकार के डेटा प्लॉट:
    • Bar plot—श्रेणीबद्ध डेटा के संख्यात्मक मान दिखाता है।
    • Line plot—किसी चर का प्रगति क्रम दिखाता है, आमतौर पर समय के साथ।
    • Scatter plot—दो चर के बीच संबंध दिखाता है।
    • Area plot—लाइन प्लॉट पर आधारित, जिसमें रेखा के नीचे का क्षेत्र रंगा या पैटर्न से भरा होता है।
    • Pie chart—श्रेणीबद्ध डेटा की प्रत्येक श्रेणी का संपूर्ण में अनुपात दिखाता है।
    • Box plot—डेटा की वर्णनात्मक सांख्यिकी का सेट दिखाता है।
  • एडवांस्ड प्रकार के डेटा प्लॉट:
    • Violin plot—डेटा की वर्णनात्मक सांख्यिकी के साथ-साथ वितरण का आकार भी दिखाता है।
    • Heatmap—डेटासेट के प्रत्येक संख्यात्मक बिंदु की परिमाण दिखाता है।
    • Treemap—श्रेणीबद्ध डेटा के संख्यात्मक मान दिखाता है, अक्सर संपूर्ण का हिस्सा के रूप में।
    • Dendrogram—डेटा की आंतरिक पदानुक्रम और क्लस्टरिंग दिखाता है।
    • Bubble plot—तीन चरों के बीच संबंध दिखाता है।
    • Hexbin plot—तुलनात्मक रूप से बड़े डेटासेट में दो संख्यात्मक चरों के संबंध दिखाता है।
    • Word cloud—इनपुट टेक्स्ट में शब्दों की आवृत्ति दिखाता है।
    • Choropleth map—जियोडेटा की समग्र थीमैटिक सांख्यिकी दिखाता है।
    • Circular packing chart—डेटा की आंतरिक पदानुक्रम और डेटा बिंदुओं के मान दिखाता है
    • आदि।

Data Visualization with R स्किल ट्रैक आपको R ग्राफिक्स के क्षेत्र में क्षितिज व्यापक करने में मदद करेगा। यदि आप R में डेटा विज़ुअलाइजेशन को व्यापक संदर्भ में सीखना पसंद करते हैं, तो शुरुआती-अनुकूल और विस्तृत करियर ट्रैक Data Scientist with R देखें।

24. R में वेक्टर रीसाइक्लिंग क्या है?

यदि हम दो अलग-अलग लंबाई के R वेक्टरों पर कोई ऑपरेशन करने की कोशिश करते हैं, तो R इंटरप्रेटर अंदर ही अंदर छोटे वेक्टर का पता लगाता है, उसके आइटम्स को उसी क्रम में दोहराता है जब तक दोनों वेक्टरों की लंबाई बराबर न हो जाए, और उसके बाद आवश्यक ऑपरेशन करता है। वेक्टर रीसाइक्लिंग शुरू करने से पहले, R इंटरप्रेटर वेक्टर लंबाई के असंगत होने की चेतावनी देता है।

उदाहरण के लिए, यदि हम निम्नलिखित जोड़ चलाते हैं:

c(1, 2, 3, 4, 5) + c(1, 2, 3)

दूसरा वेक्टर, वेक्टर रीसाइक्लिंग के कारण, वास्तव में c(1, 2, 3, 1, 2) में परिवर्तित हो जाएगा। अतः, इस ऑपरेशन का अंतिम परिणाम c(2, 4, 6, 5, 7) होगा।

कभी-कभी वेक्टर रीसाइक्लिंग लाभकारी हो सकता है (जैसे जब हम वेक्टरों में मानों की आवधिकता की अपेक्षा करते हैं), लेकिन अधिकतर यह अनुपयुक्त और भ्रामक होता है। इसलिए, हमें ऑपरेशन से पहले वेक्टरों की लंबाई पर ध्यान देना चाहिए।

25. R में next और break स्टेटमेंट्स का उपयोग क्या है?

next स्टेटमेंट का उपयोग किसी विशेष इटरेशन को छोड़कर अगले पर जाने के लिए किया जाता है, यदि कोई शर्त पूरी होती है। break स्टेटमेंट का उपयोग किसी विशेष इटरेशन पर लूप को रोकने और बाहर निकलने के लिए किया जाता है, यदि कोई शर्त पूरी होती है। नेस्टेड लूप में किसी एक आंतरिक लूप में इस्तेमाल होने पर, यह केवल उसी आंतरिक लूप से बाहर निकलता है।

दोनों next और break स्टेटमेंट्स R के किसी भी लूप (for, while, repeat) में इस्तेमाल किए जा सकते हैं। इन्हें एक ही लूप में साथ में भी उपयोग किया जा सकता है, जैसे:

for(i in 1:10) {
    if(i < 5)
        next
    if(i == 8)
        break
    print(i)}

आउटपुट:

[1] 5
[1] 6
[1] 7

26. R में str() और summary() फ़ंक्शन्स में क्या अंतर है?

str() फ़ंक्शन किसी R ऑब्जेक्ट की संरचना और उसके बारे में समग्र जानकारी लौटाता है, जिसकी सटीक सामग्री उस ऑब्जेक्ट के डेटा स्ट्रक्चर पर निर्भर करती है। उदाहरण के लिए, वेक्टर के लिए यह आइटम्स के डेटा टाइप, आइटम इंडेसेज़ की रेंज, और आइटम मान (या यदि वेक्टर बहुत लंबा हो तो शुरुआती कुछ मान) लौटाता है। डेटा फ्रेम के लिए, यह उसकी क्लास (data.frame), ऑब्जर्वेशन्स और वेरिएबल्स की संख्या, कॉलम नाम, प्रत्येक कॉलम का डेटा टाइप, और प्रत्येक कॉलम के शुरुआती कुछ मान लौटाता है।

summary() फ़ंक्शन किसी R ऑब्जेक्ट की सार-सांख्यिकी लौटाता है। इसे मुख्यतः डेटा फ्रेम्स और मैट्रिक्स पर लागू किया जाता है, जिनके लिए यह प्रत्येक संख्यात्मक कॉलम के लिए न्यूनतम, अधिकतम, माध्य, और माध्यिका तथा 1st और 3rd क्वार्टाइल्स लौटाता है, जबकि फैक्टर कॉलम्स के लिए प्रत्येक लेवल की गणना लौटाता है।

27. R में subset() और sample() फ़ंक्शन्स में क्या अंतर है?

R में subset() फ़ंक्शन का उपयोग किसी डेटा फ्रेम या मैट्रिक्स से पंक्तियाँ और कॉलम, या किसी वेक्टर से एलिमेंट्स, कुछ शर्तों के आधार पर निकालने के लिए किया जाता है, जैसे: subset(my_vector, my_vector > 10)।

इसके विपरीत, sample() फ़ंक्शन केवल वेक्टरों पर लागू होता है। यह किसी वेक्टर के एलिमेंट्स में से पूर्वनिर्धारित आकार का एक रैंडम सैंपल निकालता है, रिप्लेसमेंट के साथ या बिना। उदाहरण के लिए, sample(my_vector, size=5, replace=TRUE)

एडवांस्ड R प्रोग्रामिंग इंटरव्यू सवाल

28. R में अन्य कॉलम्स के आधार पर डेटा फ्रेम में नया कॉलम कैसे बनाया जाए?

1. बेस R के transform() और ifelse() फ़ंक्शन्स का उपयोग करके:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df <- transform(df, col_3 = ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

आउटपुट:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

2. बेस R के with() और ifelse() फ़ंक्शन्स का उपयोग करके:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df["col_3"] <- with(df, ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

आउटपुट:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

3. बेस R के apply() फ़ंक्शन का उपयोग करके:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df["col_3"] <- apply(df, 1, FUN = function(x) if(x[1] < x[2]) x[1] + x[2] else x[1] * x[2])
print(df) 

आउटपुट:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

4. dplyr पैकेज के mutate() और बेस R के ifelse() फ़ंक्शन्स का उपयोग करके:

df <- data.frame(col_1 = c(1, 3, 5, 7),  col_2 = c(8, 6, 4, 2))
print(df)
​
# Adding the column col_3 to the data frame df
df <- mutate(df, col_3 = ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)

आउटपुट:

  col_1 col_2
1     1     8
2     3     6
3     5     4
4     7     2
  col_1 col_2 col_3
1     1     8     9
2     3     6     9
3     5     4    20
4     7     2    14

29. R में किसी स्ट्रिंग से दिनांक कैसे पार्स करें?

R में किसी स्ट्रिंग से दिनांक पार्स करने के लिए, हमें टाइडिवर्स के lubridate पैकेज का उपयोग करना चाहिए। यह पैकेज स्ट्रिंग के प्रारंभिक डेट पैटर्न के आधार पर उसमें से मानक दिनांक निकालने के लिए विभिन्न फ़ंक्शन्स देता है। ये फ़ंक्शन्स हैं ymd(), ymd_hm(), ymd_hms(), dmy(), dmy_hm(), dmy_hms(), mdy(), mdy_hm(), mdy_hms(), आदि, जहाँ y, m, d, h, m, और s क्रमशः year, month, day, hours, minutes, और seconds को दर्शाते हैं।

उदाहरण के लिए, यदि हम dmy() फ़ंक्शन को "05-11-2023", "05/11/2023" या "05.11.2023" में से किसी भी स्ट्रिंग पर चलाते हैं, जो एक ही दिनांक दर्शाती हैं, तो हर बार एक ही परिणाम मिलेगा: 2023-11-05। ऐसा इसलिए है क्योंकि तीनों ही मामलों में, विभाजक प्रतीक अलग होने पर भी पैटर्न एक ही है: दिन, फिर महीना, फिर वर्ष।

30. R में switch() फ़ंक्शन का उपयोग क्या है?

switch() फ़ंक्शन R में एक मल्टीवे ब्रांच कंट्रोल स्टेटमेंट है, जो किसी अभिव्यक्ति का किसी सूची के आइटम्स से मिलान करता है। इसकी सिंटैक्स है:

switch(expression, case_1, case_2, case_3....)

switch() को पास की गई अभिव्यक्ति या तो संख्या या कैरेक्टर स्ट्रिंग पर मूल्यांकित हो सकती है, और इसके अनुसार फ़ंक्शन का व्यवहार अलग होता है।

1. यदि अभिव्यक्ति संख्या पर मूल्यांकित होती है, तो switch() पोज़िशनल मैचिंग के आधार पर (अर्थात जिसका इंडेक्स उस संख्या के बराबर हो) सूची का आइटम लौटाता है। यदि संख्या सूची के आइटम्स की संख्या से बड़ी है, तो switch() NULL लौटाता है। उदाहरण:

switch(2, "circle", "triangle", "square")

आउटपुट:

"triangle"

2. यदि अभिव्यक्ति कैरेक्टर स्ट्रिंग पर मूल्यांकित होती है, तो switch() नाम के आधार पर मान लौटाता है:

switch("red", "green"="apple", "orange"="carot", "red"="tomato", "yellow"="lemon")

आउटपुट:

"tomato"

यदि एक से अधिक मैच हों, तो पहला मिला मान लौटाया जाता है। switch() फ़ंक्शन के अंतिम आर्ग्युमेंट के रूप में एक अननेम्ड आइटम भी जोड़ा जा सकता है, जो किसी मैच न मिलने की स्थिति में डिफ़ॉल्ट फॉलबैक विकल्प होगा। यदि यह डिफ़ॉल्ट सेट नहीं है और कोई मैच नहीं है, तो फ़ंक्शन NULL लौटाता है।

switch() फ़ंक्शन लंबे if-else स्टेटमेंट्स का कुशल विकल्प है, क्योंकि यह कोड को कम दोहराव वाला और अधिक पठनीय बनाता है। सामान्यत: इसे किसी एक अभिव्यक्ति का मूल्यांकन करने के लिए उपयोग किया जाता है। हम कई अभिव्यक्तियों के मूल्यांकन के लिए अधिक जटिल नेस्टेड switch कॉन्स्ट्रक्ट्स भी लिख सकते हैं; हालांकि इस रूप में switch() जल्दी ही पढ़ने में कठिन हो जाता है और if-else की तुलना में अपना मुख्य लाभ खो देता है।

31. apply(), lapply(), sapply(), और tapply() फ़ंक्शन्स में क्या अंतर है?

ये सभी फ़ंक्शन्स लूप्स का उपयोग किए बिना किसी डेटा स्ट्रक्चर पर इटरेट करने और उसके प्रत्येक एलिमेंट पर समान ऑपरेशन करने की अनुमति देते हैं, लेकिन इनका इनपुट-आउटपुट टाइप और वे किस प्रकार का फ़ंक्शन करते हैं, इसमें भिन्नता है।

  • apply()—डेटा फ्रेम, मैट्रिक्स, या ऐरे लेता है और वेक्टर, लिस्ट, मैट्रिक्स, या ऐरे लौटाता है। इसे रो-वाइज़, कॉलम-वाइज़, या दोनों तरह से लगाया जा सकता है।

  • lapply()—वेक्टर, लिस्ट, या डेटा फ्रेम लेता है और हमेशा लिस्ट लौटाता है। इनपुट डेटा फ्रेम होने पर यह केवल कॉलम-वाइज़ लागू होता है।

  • sapply()—वेक्टर, लिस्ट, या डेटा फ्रेम लेता है और सबसे सरलित डेटा स्ट्रक्चर लौटाता है, यानी इनपुट वेक्टर के लिए वेक्टर, इनपुट लिस्ट के लिए लिस्ट, और इनपुट डेटा फ्रेम के लिए मैट्रिक्स।

  • tapply()—विभिन्न फैक्टर्स (यानी श्रेणीबद्ध डेटा) के लिए सार-सांख्यिकी की गणना करता है।

32. R में कंट्रोल स्टेटमेंट्स को सूचीबद्ध करें और परिभाषित करें।

R में कंट्रोल स्टेटमेंट्स की तीन श्रेणियाँ हैं: कंडीशनल स्टेटमेंट्स, लूप स्टेटमेंट्स, और जंप स्टेटमेंट्स।

कंडीशनल स्टेटमेंट्स:

  • if—जाँचता है कि दी गई शर्त सत्य है या नहीं और सत्य होने पर किए जाने वाले ऑपरेशन्स प्रदान करता है।

  • if-else—दी गई शर्त सत्य है या नहीं, यह जाँचता है; सत्य होने पर किए जाने वाले ऑपरेशन्स और असत्य होने पर किए जाने वाले दूसरे सेट के ऑपरेशन्स प्रदान करता है।

  • if... else if... else—एक-एक करके शर्तों की श्रृंखला की जाँच करता है, प्रत्येक शर्त सत्य होने पर किए जाने वाले ऑपरेशन्स प्रदान करता है, और अगर कोई शर्त सत्य नहीं है तो फॉलबैक ऑपरेशन्स का सेट प्रदान करता है।

  • switch—किसी अभिव्यक्ति का किसी सूची के आइटम्स से मिलान करता है और इस मूल्यांकन के परिणाम के आधार पर सूची से मान लौटाता है।

लूप स्टेटमेंट्स:

  • for—for लूप्स में, किसी अनुक्रम पर इटरेट करता है।

  • while—while लूप्स में, वर्तमान इटरेशन पर पूर्वनिर्धारित लॉजिकल कंडीशन (या कई) की पूर्ति की जाँच करता है।

  • repeat—repeat लूप्स में, तब तक वही ऑपरेशन्स जारी रखता है जब तक कोई ब्रेक कंडीशन (या कई) पूरी न हो जाए।

जंप स्टेटमेंट्स:

  • next—किसी लूप के विशेष इटरेशन को छोड़कर अगले पर जाता है यदि कोई शर्त पूरी हो।

  • break—किसी विशेष इटरेशन पर शर्त पूरी होने पर लूप को रोककर बाहर निकलता है।

  • return—किसी फ़ंक्शन से बाहर निकलता है और परिणाम लौटाता है।

33. रेगुलर एक्सप्रेशन्स क्या हैं, और R में इनके साथ कैसे काम करते हैं?

रेगुलर एक्सप्रेशन, या regex, R या अन्य प्रोग्रामिंग भाषाओं में, कोई कैरेक्टर या कैरेक्टर्स का अनुक्रम होता है जो किसी निश्चित टेक्स्ट पैटर्न का वर्णन करता है और टेक्स्ट डेटा माइनिंग के लिए उपयोग होता है। R में regex के साथ काम करने के दो मुख्य तरीके हैं:

  1. बेस R और उसके फ़ंक्शन्स (जैसे grep(), regexpr(), gsub(), regmatches(), आदि) का उपयोग करके regex को लोकेट, मैच, एक्सट्रैक्ट, और रिप्लेस करना।
  2. टाइडिवर्स के विशेष stringr पैकेज का उपयोग करना। यह R regex के साथ काम करने का अधिक सुविधाजनक तरीका है क्योंकि stringr के फ़ंक्शन्स के नाम और सिंटैक्स अधिक सहज हैं और अधिक विस्तृत कार्यक्षमता देते हैं।

A Guide to R Regular Expressions R में regex के साथ काम करने के बारे में अधिक विस्तार देता है।

34. R में मशीन लर्निंग के लिए कौन से पैकेज उपयोग होते हैं?

  • caret—विभिन्न क्लासिफिकेशन और रिग्रेशन एल्गोरिद्म्स के लिए।
  • e1071—SVM, नैव बेयेज़ क्लासिफायर, बैग्ड क्लस्टरिंग, फज़ी क्लस्टरिंग, और KNN के लिए।
  • kernlab—क्लासिफिकेशन, रिग्रेशन, और क्लस्टरिंग एल्गोरिद्म्स के लिए कर्नेल-आधारित विधियाँ।
  • randomForest—रैंडम फॉरेस्ट क्लासिफिकेशन और रिग्रेशन एल्गोरिद्म्स के लिए।
  • xgboost—ग्रेडिएंट बूस्टिंग, लीनियर रिग्रेशन, और डिसीजन ट्री एल्गोरिद्म्स के लिए।
  • rpart—क्लासिफिकेशन, रिग्रेशन, और सर्वाइवल ट्रीज़ में रिकर्सिव पार्टिशनिंग के लिए।
  • glmnet—लासो और इलास्टिक-नेट रेगुलराइज़ेशन विधियाँ, जिन्हें लीनियर, लॉजिस्टिक, और मल्टीनोमियल रिग्रेशन पर लागू किया जाता है।
  • nnet—न्यूरल नेटवर्क्स और मल्टीनोमियल लॉग-लीनियर एल्गोरिद्म्स के लिए।
  • tensorflow—TensorFlow के लिए R इंटरफेस, डीप न्यूरल नेटवर्क्स और डेटा फ्लो ग्राफ़्स का उपयोग करके न्यूमेरिकल कंप्यूटेशन के लिए।
  • Keras—Keras के लिए R इंटरफेस, डीप न्यूरल नेटवर्क्स के लिए।

35. R में मशीन लर्निंग के लिए फीचर सेलेक्शन कैसे करें?

आइए तीन अलग-अलग तरीकों और उन्हें caret पैकेज में लागू करने के तरीकों पर विचार करें।

  1. डेटासेट से अत्यधिक सहसंबद्ध फीचर्स का पता लगाकर और उन्हें हटाकर।

हमें सभी फीचर्स का एक कोरिलेशन मैट्रिक्स बनाना होगा और फिर अत्यधिक सहसंबद्ध फीचर्स की पहचान करनी होगी, आमतौर पर वे जिनका कोरिलेशन कोएफ़िशिएंट 0.75 से अधिक हो:

corr_matrix <- cor(features)
highly_correlated <- findCorrelation(corr_matrix, cutoff=0.75)
print(highly_correlated)
  1. डेटा फ्रेम के फीचर्स को उनकी इम्पोर्टेंस के आधार पर रैंक करके।

हमें ट्रेन को नियंत्रित करने के लिए एक ट्रेनिंग स्कीम बनानी होगी, उससे चयनित मॉडल बनाना होगा, और फिर उस मॉडल के लिए वेरिएबल इम्पोर्टेंस का आकलन करना होगा:

control <- trainControl(method="repeatedcv", number=10, repeats=5)
model <- train(response_variable~., data=df, method="lvq", preProcess="scale", trControl=control)
importance <- varImp(model)
print(importance)
  1. स्वचालित रूप से इष्टतम फीचर्स का चयन करके।

caret द्वारा प्रदान की गई सबसे लोकप्रिय विधियों में से एक बैकवर्ड सेलेक्शन एल्गोरिद्म है जिसे Recursive Feature Elimination (RFE) कहते हैं।

हमें चुनी हुई रिसैम्पलिंग विधि और पूर्वनिर्धारित फ़ंक्शन्स की सूची का उपयोग करके कंट्रोल कैलकुलेट करना होगा, RFE एल्गोरिद्म को फीचर्स, टार्गेट वेरिएबल, रखने योग्य फीचर्स की संख्या और कंट्रोल पास करके लागू करना होगा, और फिर चयनित प्रेडिक्टर्स निकालने होंगे:

control <- rfeControl(functions=caretFuncs, method="cv", number=10)
results <- rfe(features, target_variable, sizes=c(1:8), rfeControl=control)
print(predictors(results))

यदि आपको R में मशीन लर्निंग कौशल मजबूत करने की ज़रूरत है, तो यह ठोस और व्यापक संसाधन देखें: Machine Learning Scientist with R।

36. कोरिलेशन और कोवेरियंस क्या हैं, और R में इन्हें कैसे कैलकुलेट करते हैं?

कोरिलेशन दो चरों के बीच रैखिक संबंध की ताकत और दिशा का माप है। यह -1 (संपूर्ण नकारात्मक सहसंबंध) से 1 (संपूर्ण सकारात्मक सहसंबंध) तक मान लेता है। कोवेरियंस दो चरों के आपस में कैसे बदलने की डिग्री और उनके रैखिक संबंध की दिशा का माप है। कोरिलेशन के विपरीत, कोवेरियंस का कोई रेंज लिमिट नहीं है।

R में, कोरिलेशन कैलकुलेट करने के लिए cor() और कोवेरियंस के लिए cov() फ़ंक्शन का उपयोग करें। दोनों फ़ंक्शन्स की सिंटैक्स समान है: हम दो वेरिएबल्स (वेक्टर) पास करते हैं जिनके लिए यह माप निकालना है (जैसे cor(vector_1, vector_2) या cov(vector_1, vector_2)), या पूरा डेटा फ्रेम यदि हमें उस डेटा फ्रेम के सभी वेरिएबल्स के बीच कोरिलेशन या कोवेरियंस निकालना है (जैसे cor(df) or cov(df))। दो वेक्टरों के मामले में परिणाम एक एकल मान होता है; डेटा फ्रेम के मामले में परिणाम एक कोरिलेशन (या कोवेरियंस) मैट्रिक्स होता है।

37. R में मॉडल एक्यूरेसी का आकलन करने के विभिन्न तरीकों को सूचीबद्ध करें और परिभाषित करें।

नीचे कई तरीके दिए गए हैं और उन्हें R के caret पैकेज में कैसे लागू करें।

  • डेटा स्प्लिटिंग—पूरा डेटासेट ट्रेनिंग और टेस्ट डेटासेट में बांटा जाता है। पहले पर मॉडल फिट किया जाता है, दूसरे पर अनदेखे डेटा पर उसका प्रदर्शन टेस्ट किया जाता है। यह तरीका विशेष रूप से बड़े डेटा पर अच्छा काम करता है। R में डेटा स्प्लिटिंग लागू करने के लिए createDataPartition() फ़ंक्शन का उपयोग करें और p पैरामीटर को ट्रेनिंग के लिए जाने वाले डेटा के आवश्यक अनुपात पर सेट करें।
  • बूटस्ट्रैप रिसैम्पलिंग—डेटासेट से रैंडम सैंपल्स निकालकर उन पर मॉडल का आकलन करना। ऐसी रिसैम्पलिंग इटरेशन्स कई बार और रिप्लेसमेंट के साथ चलाई जाती हैं। R में बूटस्ट्रैप रिसैम्पलिंग लागू करने के लिए, मॉडल के ट्रेनिंग कंट्रोल को परिभाषित करते समय trainControl() के method पैरामीटर को "boot" पर सेट करें।
  • क्रॉस-वैलिडेशन विधियाँ
    • k-fold क्रॉस-वैलिडेशन —डेटासेट को k उपसमूहों में बांटा जाता है। मॉडल k-1 उपसमूहों पर ट्रेन और शेष एक पर टेस्ट होता है। यह प्रक्रिया सभी उपसमूहों के लिए दोहराई जाती है और फिर अंतिम मॉडल एक्यूरेसी का आकलन किया जाता है।
    • रिपीटेड k-fold क्रॉस-वैलिडेशन —सिद्धांत k-fold जैसा ही है, बस डेटासेट को k उपसमूहों में एक से अधिक बार बांटा जाता है। प्रत्येक रिपीट के लिए मॉडल एक्यूरेसी का आकलन होता है और फिर सभी रिपीट्स के मानों का औसत अंतिम एक्यूरेसी होता है।
    • लीव-वन-आउट क्रॉस-वैलिडेशन (LOOCV) —एक ऑब्जर्वेशन अलग रखकर, शेष सभी पर मॉडल ट्रेन होता है। यह प्रक्रिया हर ऑब्जर्वेशन के लिए दोहराई जाती है।

R में इन क्रॉस-वैलिडेशन विधियों को लागू करने के लिए, मॉडल के ट्रेनिंग कंट्रोल को परिभाषित करते समय trainControl() के method पैरामीटर को क्रमशः "cv", "repeatedcv", या "LOOCV" पर सेट करें।

38. ची-स्क्वेयर्ड टेस्ट क्या है, और R में इसे कैसे चलाएँ?

ची-स्क्वेयर्ड सांख्यिकीय परिकल्पना परीक्षण एक तकनीक है जिसका उपयोग यह निर्धारित करने के लिए किया जाता है कि दो श्रेणीबद्ध वेरिएबल्स स्वतंत्र हैं या उनके बीच कोई सहसंबंध है। R में ची-स्क्वेयर्ड टेस्ट चलाने के लिए, stats पैकेज के chisq.test() फ़ंक्शन का उपयोग करें। चरण इस प्रकार हैं:

1. बेस R के table() फ़ंक्शन का उपयोग करके इच्छित श्रेणीबद्ध वेरिएबल्स के साथ एक कंटिजेंसी टेबल बनाएं:

table = table(df["var_1"], df["var_2"]) 

2. कंटिजेंसी टेबल को chisq.test() फ़ंक्शन में पास करें:

chisq.test(table) 

आप ची-स्क्वेयर्ड टेस्ट और अन्य हाइपोथीसिस टेस्ट पर अपना ज्ञान हमारे Hypothesis Testing in R कोर्स में तरोताजा कर सकते हैं।

39. R में Shiny क्या है?

Shiny एक ओपन-सोर्स R पैकेज है जो केवल R का उपयोग करके, बिना HTML, CSS, या JavaScript के ज्ञान के, पूरी तरह इंटरैक्टिव वेब एप्लिकेशन्स और वेबपेजेस को आसानी और तेजी से बनाने की अनुमति देता है। R में Shiny अनेक बुनियादी और उन्नत फ़ीचर्स, विजेट्स, लेआउट्स, वेब ऐप उदाहरण और उनके आधारभूत कोड प्रदान करता है जिन पर निर्माण और कस्टमाइज़ेशन किया जा सकता है, साथ ही विभिन्न क्षेत्रों (टेक्नोलॉजी, खेल, बैंकिंग, शिक्षा, आदि) से उपयोगकर्ता शोकेस भी, जिन्हें Shiny ऐप डेवलपर समुदाय ने संकलित और वर्गीकृत किया है।

40. with() और within() फ़ंक्शन्स में क्या अंतर है?

with() फ़ंक्शन किसी डेटा फ्रेम के एक या अधिक वेरिएबल्स पर R अभिव्यक्ति का मूल्यांकन करता है और परिणाम बिना डेटा फ्रेम में बदलाव किए आउटपुट करता है। within() फ़ंक्शन किसी डेटा फ्रेम के एक या अधिक वेरिएबल्स पर R अभिव्यक्ति का मूल्यांकन करता है, डेटा फ्रेम में संशोधन करता है, और परिणाम आउटपुट करता है। नीचे एक सैंपल डेटा फ्रेम पर इनके काम करने का उदाहरण है:

df <- data.frame(a = c(1, 2, 3),  b = c(10, 20, 30))
print(df)

with(df, a * b)

print(within(df, c <- a * b))

आउटपुट:

  a  b
1 1 10
2 2 20
3 3 30

10  40  90
  a  b  c
1 1 10 10
2 2 20 40
3 3 30 90

within() फ़ंक्शन का उपयोग करते समय, परिवर्तनों को सहेजने के लिए, हमें फ़ंक्शन के आउटपुट को किसी वेरिएबल में असाइन करना होता है।

निष्कर्ष

अंत में, इस लेख में हमने R प्रोग्रामिंग के 40 सबसे आम इंटरव्यू सवालों और उनके अपेक्षित उत्तरों पर विचार किया। आशा है, इस जानकारी के साथ आप R इंटरव्यू के लिए अधिक आत्मविश्वासी महसूस करेंगे—चाहे आप R में नौकरी ढूँढ रहे हों या अपनी कंपनी में किसी खुले पद के लिए सही उम्मीदवार।

सवालों के जवाब देने का व्यावहारिक अनुभव पाने के लिए, हमारा Practicing Statistics Interview Questions in R कोर्स देखें।


Elena Kosourova's photo
Author
Elena Kosourova
LinkedIn

IBM प्रमाणित डेटा साइंटिस्ट (2020); इससे पहले विश्वभर में तेल और गैस क्षेत्रों के पेट्रोलियम भूविज्ञानी/जियोमॉडलर, 12+ वर्षों के अंतरराष्ट्रीय कार्य अनुभव के साथ। Python, R और SQL में दक्ष। विशेषज्ञता के क्षेत्र: डेटा क्लीनिंग, डेटा मैनिपुलेशन, डेटा विज़ुअलाइज़ेशन, डेटा विश्लेषण, डेटा मॉडलिंग, सांख्यिकी, स्टोरीटेलिंग, मशीन लर्निंग। डेटा साइंस समुदायों का प्रबंधन करने और डेटा साइंस व करियर विषयों पर लेखों व ट्यूटोरियल्स के लेखन/समीक्षा में व्यापक अनुभव।

विषय
R
करियर सेवाएँ

आज ही अपनी R यात्रा शुरू करें!

{count, plural, one {लर्निंग पाथ} other {लर्निंग पाथ}}

आर डेवलपर

{hours} घंटा
एक R डेवलपर के रूप में सफल होने के लिए ज़रूरी करियर-निर्माण कौशल हासिल करें, कोड को कुशलता से लिखना और पैकेज करना सीखकर। कोई कोडिंग अनुभव आवश्यक नहीं!
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें

{count, plural, one {लर्निंग पाथ} other {लर्निंग पाथ}}

एसोसिएट डेटा वैज्ञानिक in R

{hours} घंटा
डेटा विज्ञान के लिए R का उपयोग करना सीखें, डेटा हेरफेर से लेकर मशीन लर्निंग तक। डेटा विज्ञान में सफल होने के लिए आवश्यक करियर-निर्माण कौशल हासिल करें!
और देखेंRight Arrow