मैं बस कुछ अजीब में भाग गया, जो उम्मीद है कि यहां कोई व्यक्ति कुछ प्रकाश डाल सकता है। असल में, जब किसी फ़ंक्शन में कोई तर्क होता है जिसका डिफ़ॉल्ट मान तर्क का नाम होता है, तो अजीब चीजें होती हैं (ठीक है, वैसे भी मेरे लिए अजीब)।तर्क के साथ अप्रत्याशित व्यवहार डिफ़ॉल्ट
उदाहरण के लिए:
y <- 5
f <- function(x=y) x^2
f2 <- function(y=y) y^2
मैं विचार करेगा f
और f2
बराबर हो; हालांकि वे आंतरिक रूप से विभिन्न चर नामों का उपयोग करते हैं, फिर भी उन्हें डिफ़ॉल्ट वातावरण के रूप में उपयोग करने के लिए वैश्विक वातावरण में y
ऑब्जेक्ट चुनना चाहिए। हालांकि:
> f()
[1] 25
> f2()
Error in y^2 : 'y' is missing
यह सुनिश्चित नहीं है कि यह क्यों हो रहा है।
बस चीजों को और भी अधिक दिलचस्प बनाने के:
f3 <- function(y=y) y$foo
> f3()
Error in f3() :
promise already under evaluation: recursive default argument reference or earlier problems?
मैं f3 की उम्मीद एक त्रुटि फेंक, लेकिन नहीं है कि एक!
यह 32-बिट विंडोज एक्सपी एसपी 3 पर आर 2.11.1, 2.12.2, और 2.14 पर परीक्षण किया गया था। केवल मानक संकुल लोड हो गए।
अंततः आप कोड करने के लिए 'f2 <चाहता था - समारोह (y = पर्यावरण (F2) $ y) वाई^2' और 'f3 <- फ़ंक्शन (y = पर्यावरण (f3) $ y) y $ foo' – jogo