आर प्रोग्रामिंग भाषा में ~ (टिल्ड) का उपयोग


187

मैंने निम्नलिखित कमांड के प्रतिगमन के बारे में एक ट्यूटोरियल में देखा:

myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width

वास्तव में यह कमांड क्या करता है, और कमांड में ~(टिल्ड) की भूमिका क्या है ?


ट्यूटोरियल के लिए लिंक साझा करने की देखभाल? दिलचस्प लगता है।
cheesus

1
@cheeesus ... मैं केस स्टडी के साथ R में ईबुक डेटा माइनिंग से गुज़र रहा था ... वहाँ आपको ऐसे कई दिलचस्प उदाहरण मिल सकते हैं।
अंकिता

जवाबों:


193

के दाईं ओर की वस्तु <-एक formulaवस्तु है। यह अक्सर एक सांख्यिकीय मॉडल को निरूपित करने के लिए उपयोग किया जाता है, जहां बाईं ओर की चीज ~प्रतिक्रिया है और दाईं ओर की चीजें ~व्याख्यात्मक चर हैं। तो अंग्रेजी में आप कहेंगे कि "स्पीशीज़ सेपल लेंथ, सेपल विथ, पेटल लेंथ और पेटल विथ" पर निर्भर करता है

myFormula <-उस पंक्ति का भाग किसी ऑब्जेक्ट में सूत्र को संग्रहीत करता है, जिसे myFormulaआप अपने R कोड के अन्य भागों में उपयोग कर सकते हैं।


आर में सूत्र वस्तुओं के अन्य सामान्य उपयोग

latticeपैकेज उन का उपयोग करता है करने के लिए साजिश करने के लिए चर निर्दिष्ट । पैकेज उन का उपयोग करता है करने के लिए साजिश रचने के लिए पैनल निर्दिष्ट । पैकेज के लिए उन्हें का उपयोग करता अमानक evaulation
ggplot2
dplyr


1
थोड़ी और विस्तार चर्चा के लिए: stackoverflow.com/questions/8055508/the-tilde-operator-in-r/…
IRTFM

की 'सूत्रों' अनुभाग lazyevalशब्दचित्र के लिए एक अच्छा परिचय देता है क्या एक सूत्र है
RobinL

82

~सूत्रों में उपयोग के लिए आर (टिल्ड) ऑपरेटर को परिभाषित करता है । सूत्रों के सभी प्रकार के उपयोग हैं, लेकिन शायद प्रतिगमन के लिए सबसे आम है:

library(datasets)
lm( myFormula, data=iris)

help("~")या help("formula")आपको और अधिक सिखाएगा।

@Spacedman ने मूल बातें कवर की हैं। आइए चर्चा करें कि यह कैसे काम करता है।

सबसे पहले, एक ऑपरेटर होने के नाते, ध्यान दें कि यह अनिवार्य रूप से एक फ़ंक्शन का शॉर्टकट है (दो तर्कों के साथ):

> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs

उदाहरण के लिए applyपारिवारिक आदेशों में उपयोग के लिए जानना उपयोगी हो सकता है ।

दूसरा, आप पाठ के रूप में सूत्र में फेरबदल कर सकते हैं :

oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )

तीसरा, आप इसे सूची के रूप में जोड़ सकते हैं :

myFormula[[2]]
myFormula[[3]]

अंत में, सूत्रों के साथ कुछ उपयोगी ट्रिक हैं ( help("formula")अधिक के लिए देखें ):

myFormula <- Species ~ . 

उदाहरण के लिए, उपरोक्त संस्करण मूल संस्करण के समान है, क्योंकि डॉट का अर्थ है "अभी तक उपयोग नहीं किए गए सभी चर"। यह आपके अंतिम मॉडल कॉल में उपयोग किए जाने वाले डेटा.फ़्रेम को देखता है, देखता है कि कौन-से चर डेटा में मौजूद हैं। फ़्रेम लेकिन आपके सूत्र में स्पष्ट रूप से उल्लेख नहीं किया गया है, और उन लापता चर के साथ डॉट को प्रतिस्थापित करता है।


जवाब के लिए धन्यवाद @Ari बी। फ्रीडमैन लेकिन अंतिम पंक्ति थोड़ी अस्पष्ट है जहां आप कहते हैं कि 'डॉट का अर्थ है "सभी चर अभी तक उपयोग नहीं किए गए"। यदि आप इसे आगे बता सकते हैं।
अंकिता

9
इस संदर्भ में @Akkita, "अभी तक उपयोग नहीं किया गया" का अर्थ नहीं है। में Species~., प्रजाति एकमात्र चर है जिसका उपयोग किया गया है। इसलिए, यह data.frame में हर दूसरे चर पर निर्भर करता है।
x4nd3r

मुझे समझ नहीं आ रहा है myFormula <- Species ~ . । जब डॉट को अभी भी data.frame से चर के साथ प्रतिस्थापित किया जाता है? क्या आप एक उदाहरण प्रदान कर सकते हैं
srghma
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.