2010-08-03 58 views
22

isTRUE(all.equal(x, y)) और identical(x, y) परीक्षण के बीच कोई अंतर है?समान (एक्स, वाई) और isTRUE (all.equal (x, y)) के बीच आर में क्या अंतर है?

मदद पृष्ठ का कहना है:

'अगर' भाव-या तो उपयोग 'isTRUE (all.equal (....))' या में सीधे का उपयोग न करें 'all.equal' यदि उपयुक्त हो तो 'समान'।

लेकिन "यदि उपयुक्त हो तो मुझे संदेह में छोड़ देता है। मैं कैसे तय करूं कि इनमें से कौन सा उचित है?

उत्तर

20

all.equal निकट समानता के लिए परीक्षण, जबकि identical अधिक सटीक है (उदाहरण के लिए इसमें मतभेदों के लिए कोई सहनशीलता नहीं है, और यह भंडारण प्रकार की तुलना करता है)। से समान:

समारोह 'all.equal' भी कभी कभी समानता इस तरह से परीक्षण करने के लिए प्रयोग किया जाता है, लेकिन कुछ अलग के लिए गया था: यह संख्यात्मक परिणामों में छोटे अंतर के लिए अनुमति देता है।

और एक कारण आप isTRUE में all.equal लपेट होगा क्योंकि all.equalहोगा रिपोर्ट बजाय मतभेद बस FALSE वापसी है।

+2

धन्यवाद, 'कोई सहनशीलता' कुंजी नहीं थी: 'all.equal (8.0, 9.0, सहिष्णुता = 1.0)' – mariotomo

+0

एक और उदाहरण यह है कि 'समान()' इनट्स और लम्बे समय से अलग होंगे, भले ही उनके पास वही मान, जबकि 'all.equal()' कहेंगे कि वे बराबर हैं। – smci

12

identical फ़्यूज़ियर है। उदाहरण के लिए:

> identical(as.double(8), as.integer(8)) 
[1] FALSE 
> all.equal(as.double(8), as.integer(8)) 
[1] TRUE 
> as.double(8) == as.integer(8) 
[1] TRUE 
8

संख्यात्मक सहिष्णुता और भंडारण मोड की तुलना में मतभेद के अलावा, all.equal() के विपरीत, identical भी संबद्ध वातावरण की समानता परीक्षण करती है। आर में नियमित ऑब्जेक्ट्स सामान्य रूप से जुड़े वातावरण नहीं होते हैं - वे आमतौर पर function और formula (और terms) ऑब्जेक्ट्स से जुड़े होते हैं।

ignore.environment:

x <- 2; environment(x) <- new.env() 
y <- 2; environment(y) <- new.env() 
all.equal(x,y) ## TRUE 
identical(x,y) ## FALSE 

एक ignore.environment तर्क नहीं है: लेकिन वर्णन करने के लिए, मैं दो तुच्छ वस्तुओं अलग (नव निर्मित) वातावरण दे देंगे तार्किक संकेत अपने वातावरण को नजरअंदाज कर दिया जब जाना चाहिए बंद तुलना की तुलना।

लेकिन जब से यह केवल जब बंद (अर्थात कार्यों) की तुलना लागू किया जाता है, यह इस मामले में कोई फर्क नहीं करता है - और न ही जब सूत्रों या शब्दों वस्तुओं की तुलना में यह एक फर्क होगा।

संबंधित मुद्दे