R में इनपुट डेटा के लिए एक प्रॉम्प्ट / उत्तर प्रणाली बनाना


84

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

आदर्श रूप से कोई व्यक्ति कंसोल पर बैठ सकता है, एक कमांड में टाइप कर सकता है, और डेटा दर्ज करने के तरीके पर विशिष्ट प्रश्नों के साथ संकेत दिया जा सकता है।

उदाहरण के लिए, एक व्यक्ति आर को लोड करता है और एक संकेत देखता है:

What is x value?

व्यक्ति इसमें टाइप करता है:

2

अगला संकेत:

What is y value?

व्यक्ति प्रकार:

3

अगला संकेत:

 What are T values?

व्यक्ति प्रकार:

 4,3,2,1

अगला संकेत:

V मान क्या हैं?

व्यक्ति प्रकार:

4,5,6,9

और इन 4 नए परिभाषित चर (एक्स, वाई, टी, वी) के साथ आर का अगला चरण पूर्व लिखित कोड को चलाना है

X+Y
V+T

और कंसोल में उत्तर पॉप अप होते हैं

5
8 8 8 10

और हर कोई खुश है

मेरी क्षमायाचना क्योंकि यह एक प्रतिलिपि प्रस्तुत करने योग्य कोड प्रकार का प्रश्न नहीं है, लेकिन मुझे यकीन नहीं है कि आर पूछने के लिए कैसे संपर्क करना है क्योंकि आर ने मेरे बारे में सवाल पूछने का विरोध किया है!

जवाबों:


74

चूंकि यह केवल इंटरेक्टिव कोड के रूप में उपयोग किया जाना है, इसलिए यह readline()आपके लिए काम कर सकता है। मैंने कोई त्रुटि जाँच नहीं की, लेकिन आप उचित इनपुट सुनिश्चित करने के लिए उचित मात्रा में करना चाहते हैं। यहाँ हालांकि मुख्य अवधारणा है:

fun <- function(){
  x <- readline("What is the value of x?")  
  y <- readline("What is the value of y?")
  t <- readline("What are the T values?")
  v <- readline("What are the V values?")

  x <- as.numeric(unlist(strsplit(x, ",")))
  y <- as.numeric(unlist(strsplit(y, ",")))
  t <- as.numeric(unlist(strsplit(t, ",")))
  v <- as.numeric(unlist(strsplit(v, ",")))

  out1 <- x + y
  out2 <- t + v

  return(list(out1, out2))

}

3
कोड महान काम करता है! मैं इसे शुरू करने के बारे में थोड़ा उलझन में था, लेकिन रीडलाइन () पर नोटों को देखने के बाद मैंने सिर्फ एक अंतिम पंक्ति को उपरोक्त "अगर (इंटरैक्टिव () मजेदार) (") में जोड़ा और यह तुरंत ही शुरू होता है। धन्यवाद!
विंटरव्यू

1
यह अच्छा है। मैं ठीक वैसे ही समझने की कोशिश कर रहा हूं जो अनलिस्ट और स्ट्रैप्लिट कार्यों के साथ चल रहा है। R यहाँ क्या कर रहा है?
सीनोसैपियन

1
@Seanosapien स्ट्रैसप्लिट को इनपुट से बाहर निकालने के लिए आवश्यक है यदि उपयोगकर्ता मूल उदाहरण में '' 4,3,2,1 '' टाइप करता है। यदि इनपुट उस प्रारूप में नहीं है तो यह आवश्यक नहीं है।
लॉरेन फिच

62

यह भी देखें ?menuसे utilsएक साधारण पाठ आधार मेनू इंटरफ़ेस और शीघ्र, जो भी प्रयोग किया जाता है के लिए devtools

यहाँ एक उदाहरण है:

> menu(c("Yes", "No"), title="Do you want this?")
Do you want this? 

1: Yes
2: No

Selection:

7

चूंकि यह सवाल मृतकों में से लाया गया था, इसलिए यह शायद एक अद्यतन उत्तर लिख रहा है।

यदि कोई GUI इस मामले में सभी मददगार है, तो चमकदार पैकेज अब RStudio के साथ अच्छी तरह से एकीकृत है, और इसे चमकदार एप्लिकेशन के रूप में लागू करना बहुत आसान होगा। वेबसाइट http://shiny.rstudio.com में उदाहरण और प्रलेखन सहित अधिक जानकारी है।


5

यह इस विशेष मामले के लिए ओवरकिल हो सकता है, लेकिन swirlआर को शुरुआती लोगों के लिए इंटरेक्टिव रूप से पेश करने के लिए पैकेज अच्छा है।

ज़ुल्फ़ आर प्रोग्रामिंग भाषा के लिए एक सॉफ्टवेयर पैकेज है जो R कंसोल को इंटरेक्टिव लर्निंग के माहौल में बदल देता है। उपयोगकर्ताओं को तत्काल प्रतिक्रिया मिलती है क्योंकि वे डेटा साइंस और आर प्रोग्रामिंग में स्व-पुस्तक पाठ के माध्यम से निर्देशित होते हैं।

सामग्री बनाने के लिए निर्देश यहां दिए जा सकते हैं: http://swirlstats.com/instructors.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.