2016-04-29 9 views
9

मैं आर के लिए नया हूँ और निम्न संदेश के साथ त्रुटियों मिलती रहती है:मतलब है क्या: समारोह के लिए 'ए' हस्ताक्षर के लिए '' बी '' एक विरासत विधि को खोजने में असमर्थ

एक खोजने में असमर्थ हस्ताक्षर के लिए 'ए' के ​​लिए विरासत विधि 'बी' '

ज्यादातर मामलों में मैं वैकल्पिक उदाहरण ऑनलाइन ढूंढकर अपने मुद्दों को हल करने में सक्षम हूं, लेकिन मैं समझना चाहता हूं कि त्रुटि संदेश का क्या अर्थ है इसलिए मैं बेहतर ढंग से समझ सकता हूं कि आर कैसे काम करता है।

उदाहरण के लिए, इस कोड:

library("RSQLite") 
con = dbConnect(drv="SQLite", dbname="database.db") 

इस चेतावनी उत्पन्न करता है:

समारोह के लिए एक विरासत विधि हस्ताक्षर के लिए 'dbConnect' ' "चरित्र"'

खोजने में असमर्थ

और उस त्रुटि को ठीक करने के बाद, यह कोड:

dbClearResult(p1) 

इस चेतावनी का उत्पादन:

समारोह के लिए एक विरासत विधि हस्ताक्षर के लिए 'dbClearResult' ' "data.frame"'

किसी कृपया समझा सकते हैं खोजने में असमर्थ क्या त्रुटि संदेश के इस प्रकार मुझे बताने की कोशिश कर रहा है?

विशेष रूप से, "इंटरहेटेड", "विधि", "फ़ंक्शन" और "हस्ताक्षर" शब्द सभी भाषाओं से समझने वाली अवधारणाओं से संबंधित प्रतीत होते हैं, लेकिन इस त्रुटि की वाक्य संरचना का तात्पर्य है कि उनके आर में थोड़ा अलग अर्थ हैं

+3

आपको निश्चित रूप से उस कोड को शामिल करना चाहिए जो इस त्रुटि को उत्पन्न करता है। – nrussell

+0

कोड के कई टुकड़े हुए हैं जो समान त्रुटियों को उत्पन्न करते हैं, मैं विशिष्ट समाधान की तलाश नहीं कर रहा हूं, लेकिन इस वर्ग की त्रुटि का स्पष्टीकरण। – user12341234

+2

तो एक चुनें और इसे अपने प्रश्न में शामिल करें। त्रुटि विभिन्न परिस्थितियों से उत्पन्न हो सकती है, लेकिन आपको अपने प्रश्न के आधार के रूप में एक विशिष्ट, पुनरुत्पादित उदाहरण प्रदान करना चाहिए। – nrussell

उत्तर

15

यह उस प्रकार का संदेश है जिसे आप कक्षा के किसी ऑब्जेक्ट पर S4 जेनेरिक फ़ंक्शन को लागू करने का प्रयास करते समय प्राप्त करेंगे, जिसके लिए कोई परिभाषित S4 विधि मौजूद नहीं है (या कम से कम वर्तमान आर सत्र से जुड़ा हुआ है)।

यहां रास्टर पैकेज (स्थानिक रास्टर डेटा के लिए) का उपयोग करके एक उदाहरण दिया गया है, जो एस 4 कार्यों से भरा हुआ है।

library(raster) 

## raster::rotate() is an S4 function with just one method, for "Raster" class objects 
isS4(rotate) 
# [1] TRUE 
showMethods(rotate) 
# Function: rotate (package raster) 
# x="Raster" 

## Lets see what happens when we pass it an object that's *not* of class "Raster" 
x <- 1:10 
class(x) 
# [1] "integer" 
rotate(x) 
# Error in (function (classes, fdef, mtable) : 
# unable to find an inherited method for function ‘rotate’ for signature ‘"integer"’ 
+0

@JoshObrien धन्यवाद! और एस 4 आर प्रकार प्रणाली है? और 'rotate' से' x' लगाने से त्रुटि को 'x' के प्रकार को किसी प्रकार से बदलकर' घुमाने 'को परिभाषित करके (उदाहरण के लिए) तय किया जाएगा? – user12341234

+0

@ user12341234 आपके पहले प्रश्न के लिए, यह वास्तव में उससे अधिक जटिल है। एस 4 आर के ऑब्जेक्ट उन्मुख वर्ग सिस्टम का * एक * है। S3 का सबसे अधिक उपयोग किया जाता है, एस 4 शायद सबसे अधिक बार उपयोग किया जाता है। [यहां देखें] (http://adv-r.had.co.nz/OO-essentials.html) या शायद [यहां] (http://adv-r.had.co.nz/S4.html) के लिए अधिक। और हां, 'rotate()' से 'x' लगाने से त्रुटि को ठीक करने का एकमात्र तरीका यह सुनिश्चित करना होगा कि' x' कक्षा 'रास्टर "का ऑब्जेक्ट है। –

+0

@ जोश ओब्रायन धन्यवाद, मैं मदद की सराहना करता हूं। – user12341234

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