यहाँ के लिए अमान्य है है मदद फ़ाइल से
Error in x$ed : $ operator is invalid for atomic vectors
यहाँ के लिए अमान्य है है मदद फ़ाइल से
Error in x$ed : $ operator is invalid for atomic vectors
$
के बारे में (?"$"
देखें) आप पढ़ सकते हैं:
$ is only valid for recursive objects, and is only discussed in the section below on recursive objects.
अब, चलो जाँच करें कि क्या x
आरईसी है ursive
> is.recursive(x)
[1] FALSE
एक पुनरावर्ती वस्तु में एक सूची जैसी संरचना है।
> x["ed"]
ed
2
: एक वेक्टर नहीं पुनरावर्ती, यह एक परमाणु वस्तु के बजाय, की जाँच
> is.atomic(x)
[1] TRUE
इसलिए यदि आपको कोई त्रुटि जब एक वेक्टर (गैर पुनरावर्ती वस्तु) को $
लागू करने के लिए, [
बजाय का उपयोग करते हैं है
तुम भी उपयोग कर सकते हैं getElement
> getElement(x, "ed")
[1] 2
$
क्योंकि परमाणु वैक्टर पर काम नहीं करता। इसके बजाय [
या [[
का उपयोग करें। $
के लिए मदद फ़ाइल से:
The default methods work somewhat differently for atomic vectors, matrices/arrays and for recursive (list-like, see is.recursive) objects. $ is only valid for recursive objects, and is only discussed in the section below on recursive objects.
x[["ed"]]
काम करेंगे।
आपको यह त्रुटि मिलने का कारण यह है कि आपके पास vector
है।
यदि आप $
ऑपरेटर का उपयोग करना चाहते हैं, तो आपको इसे data.frame
पर परिवर्तित करने की आवश्यकता है। लेकिन चूंकि इस विशेष मामले में आपके पास केवल एक पंक्ति है, इसलिए आपको इसे स्थानांतरित करने की भी आवश्यकता होगी; अन्यथा bob
और ed
आपके कॉलम नामों की बजाय आपकी पंक्ति नाम बन जाएंगे जो मुझे लगता है कि आप चाहते हैं।
x <- c(1, 2)
x
names(x) <- c("bob", "ed")
x <- as.data.frame(t(x))
x$ed
[1] 2
परमाणु संग्रह का उपयोग करने योग्य $
रिकर्सिव संग्रह नहीं कर रहे हैं के द्वारा कर रहे हैं। इसके बजाय [[]] का उपयोग किया जाता है। । ।
Browse[1]> is.atomic(list())
[1] FALSE
Browse[1]> is.atomic(data.frame())
[1] FALSE
Browse[1]> is.atomic(class(list(foo="bar")))
[1] TRUE
Browse[1]> is.atomic(c(" lang "))
[1] TRUE
आर अजीब कभी कभी
a = list(1,2,3)
b = data.frame(a)
d = rbind("?",c(b))
e = exp(1)
f = list(d)
print(data.frame(c(list(f,e))))
हो सकता है ... \
X1 X2 X3 X2.71828182845905
1 ? ? ? 2.718282
2 1 2 3 2.718282
मुझे लगता है कि आपके पास यह पीछे है। लिस्ट रिकर्सिव ऑब्जेक्ट्स हैं और $ के माध्यम से पहुंचा जा सकता है, न्यूमेरिक वेक्टर परमाणु हैं और नहीं कर सकते हैं। मुझे यकीन नहीं है कि आप यहां क्या दिखाने की कोशिश कर रहे हैं। –
यह उपयोग करने के लिए आसान होगा 'x <- as.list (एक्स)'। –
हाँ 1 आइटम as.list के लिए बेहतर होगा। मैं सूचियों का कभी भी उपयोग नहीं करता इसलिए मैं हमेशा उनके बारे में भूल जाता हूं। – Dalupus