My package के DESCRIPTION
फ़ाइल इसके आयात निर्देश में httr
है ओवरराइड करने के लिए:कैसे आर पैकेज से निर्यात समारोह आयात में सूचीबद्ध
Imports:
httr (>= 1.1.0),
jsonlite,
rstudioapi
httr
length.path
के लिए exports an S3method।
S3method(length,path)
और यह defined as है:
#' @export
length.path <- function(x) file.info(x)$size
अपने पैकेज में मैं वस्तुओं है कि मैं करने के लिए वर्ग "पथ" आवंटित की है। जब भी मैं, किसी भी वस्तु के लिए कक्षा "पथ" निर्दिष्ट किया जाए या नहीं मैंने कभी वस्तु पर length()
फोन की परवाह किए बिना, इस stdout में छपा है:
Error in file.info(x) : invalid filename argument
यहाँ कुछ प्रतिलिपि प्रस्तुत करने योग्य कोड हर किसी को चला सकते हैं है
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.5 (El Capitan)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_3.3.1
> thing = 1:5
> class(thing) = 'path'
> requireNamespace('httr')
Loading required namespace: httr
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.5 (El Capitan)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] httr_1.2.1 R6_2.1.2 tools_3.3.1
> thing = 1:5
> class(thing) = 'path'
Error in file.info(x) : invalid filename argument
मैं एक try
में यह पकड़ने की कोशिश की है, लेकिन वह काम नहीं करता:
set_class = function(obj, c) {
class(obj) = c
return(obj)
}
thing = 1:5
thing = try(set_class(thing, 'path'), silent=TRUE)
पैदावार:
Error in file.info(x) : invalid filename argument
मैं assignInNamespace
की कोशिश की है समारोह ओवरराइड करने के लिए:
base_length = function(obj) {
return(base::length(obj))
}
assignInNamespace('length.path', base_length, 'httr')
thing = 1:5
class(thing) = 'path'
लेकिन मैं Error: evaluation nested too deeply: infinite recursion/options(expressions=)?
मिल जब मैं अपने पैकेज में httr
कार्यों का उपयोग मैं उन्हें httr::function
साथ उपयोग करती हैं इसलिए मुझे यकीन है कि नहीं कर रहा हूँ यह length.path
फ़ंक्शन मेरे नेमस्पेस में लीक हो रहा है और आधार लंबाई फ़ंक्शन को ओवरराइड कर रहा है। मैंने httr::function
का उपयोग करने के बजाय उपयोग किए जाने वाले प्रत्येक फ़ंक्शन के लिए स्पष्ट @importFrom httr function
भी कोशिश की है लेकिन यह या तो काम नहीं करता है।
मैं भी इस पाया:
https://support.bioconductor.org/p/79059/
लेकिन समाधान httr
के स्रोत कोड है, जो मैं अपने पैकेज यह आयात के बाद से ऐसा नहीं कर सकते संपादित करने के लिए लग रहा था। मैं इसके पास कैसे आ सकता हूं?
यदि 'लंबाई()' एक सामान्य है, तो आप डिफ़ॉल्ट विधि प्राप्त करने के लिए 'base :: length.default() 'को कॉल करना चाहते हैं। – Thomas
समस्या यह है कि मैं कभी भी कॉल नहीं करता हूं। ऐसा तब होता है जब मैं कक्षा (obj) = 'path' –
कहता हूं, मुझे लगता है कि 'वर्ग (obj) =' path'' केवल RStudio या इसी तरह के IDE के भीतर एक त्रुटि देता है जहां आप मूल रूप से 'str (...) 'आपके वर्कस्पेस चर के लिए हर समय। जब आप एक नई कक्षा असाइन करते हैं तो आईडीई इस विवरण को अपडेट करता है और प्रक्रिया में 'लंबाई' कॉल करता है। "सामान्य" आरजीईई में त्रुटि नहीं होती है। – AEF