सिमुलेशन में, यह निम्नलिखित जानकारी के साथ एक चर उत्पन्न करता है। str() की अंतिम दो पंक्तियाँ .$ : NULL हैं। इसका क्या मतलब है? इसके अलावा, ..$ : chr [1:4] "E avg" "stat avg" "Angle" "int" को इस सरणी के पहले आयाम में नामों के अनुरूप होना चाहिए। ऐसा कौन सा कार्य है जो इन नामों को xy_log से पुनः प्राप्त कर सकता है?

> class(xy_log)
[1] "array"
> dim(xy_log)
[1]    4 2272 1000
> str(xy_log)
 num [1:4, 1:2272, 1:1000] 1.02e+06 2.52e-01 3.20e+01 3.99e+03 3.15e+06 ...
 - attr(*, "dimnames")=List of 3
  ..$ : chr [1:4] "E avg" "stat avg" "Angle" "int"
  ..$ : NULL
  ..$ : NULL
1
user288609 18 अप्रैल 2021, 01:57

2 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि आप dimnames(xy_log)[[1]] ढूंढ रहे हैं (पहले आयाम के नाम के लिए)

x <- array(1:8,dim=c(2,2,2),
       dimnames=list(c("a","b"), c("A","B"), c("i","ii")))
dimnames(x)[[1]]
## [1] "a" "b"

आम तौर पर आप attr(xy_log, "dimnames")[[1]] का उपयोग कर सकते हैं, लेकिन dimnames() बेहतर है क्योंकि यह अधिक विशिष्ट है।

NULL मानों का अर्थ है कि दूसरे और तीसरे आयाम अनाम हैं।

1
Ben Bolker 17 अप्रैल 2021, 23:04
rownames(xy_log) ## should get them

हालाँकि पंक्तियाँ और स्तंभ आमतौर पर एक 2D-संरचना से जुड़े होते हैं, और उदाहरण के लिए 3 आयामों के साथ जैसा कि आपके सरणी के साथ है, dimnames जिसका बेन उपयोग करता है, जो सभी आयामों के साथ सभी नामों को पुनः प्राप्त करता है, स्पष्ट हो सकता है।

इसका मतलब:

$ : NULL

बस इतना है कि इस आयाम के साथ आपके डेटा का कोई नाम नहीं है। तो आपकी 4 पंक्तियों में प्रत्येक पंक्ति के साथ एक नाम जुड़ा हुआ है, जबकि आपके कॉलम और आपके तीसरे आयाम के नाम समान रूप से संबद्ध नहीं हैं

(नोट - मैं अपने डेटा के बारे में उपयोगी जानकारी को समझने के लिए शायद ही कभी str() फ़ंक्शन का उपयोग करता हूं, ऐसे कई अन्य उपयोगी फ़ंक्शन उपलब्ध हैं जो बिंदु पर अधिक हैं), इसलिए आपके मामले में:

  ..$ : chr [1:4] "E avg" "stat avg" "Angle" "int"     ## <-- these are your rownames
  ..$ : NULL                                           ## <-- these would have been your column names, had you had any
  ..$ : NULL                                           ## <-- these would have been your '3rd-dimension' names, had they had any

आप इन नामों का उपयोग अपने डेटा को सबसेट करने के लिए भी कर सकते हैं, हालांकि बार-बार समान नामों के मामले में, इससे अप्रिय अप्रत्याशित बग हो सकते हैं, इसलिए मैं वास्तव में इसकी अनुशंसा नहीं करता।

xy_log[ "E avg",, ] ## gets all data from this one row (which would give you a matrix in this case)
1
Sirius 17 अप्रैल 2021, 23:12