जब सरणी को सब्सक्राइब करते हैं, तो आर अलग-अलग व्यवहार करता है कि आयामों में से एक लंबाई 1 या नहीं है या नहीं। एक आयाम लंबाई 1 है, तो उस आयाम subsetting दौरान खो दिया है:सब्सक्रिप्शन आर सरणी: इसकी लम्बाई होने पर आयाम खो गया है 1
ax <- array(1:24, c(2,3,4))
ay <- array(1:12, c(1,3,4))
dim(ax)
#[1] 2 3 4
dim(ay)
#[1] 1 3 4
dim(ax[,1:2,])
#[1] 2 2 4
dim(ay[,1:2,])
#[1] 2 4
देखने के लिए, कुल्हाड़ी और ay की मेरी बात से ही कर रहे हैं, और प्रदर्शन उन पर एक ही सबसेट आपरेशन ही आयामों के साथ एक सरणी वापस आ जाएगी । मैं देख सकता हूं कि आर दो मामलों को संभालने का तरीका उपयोगी हो सकता है, लेकिन यह कोड में अवांछनीय है जिसे मैं लिख रहा हूं। इसका अर्थ यह है कि जब मैं किसी अन्य फ़ंक्शन में एक सबसेटेड सरणी पास करता हूं, तो फ़ंक्शन को एक सरणी मिल जाएगी जिसमें आयाम गुम हो रहा है, अगर मैंने पहले चरण में आयाम को लंबाई 1 तक कम किया था। (इसलिए इस मामले में आर की लचीलापन मेरे कोड को कम लचीला बना रही है!)
मैं आर को सब्सक्रिप्शन के दौरान लंबाई 1 के आयाम को खोने से कैसे रोक सकता हूं? अनुक्रमण का एक और तरीका है? सेट करने के लिए कुछ ध्वज?
समान नहीं लेकिन शायद ब्याज की: http://stackoverflow.com/questions/12196724/generally-disable-dimension-dropping-for-matrices –