2016-01-05 11 views
7

मैंने अभी देखा है कि हटाए गए एक बिल्कुल अच्छे प्रश्न की तरह लग रहा था और मूल प्रश्नकर्ता की तरह मुझे डुप्लिकेट नहीं मिला, मैं फिर से पोस्ट कर रहा हूं।किसी अन्य लॉजिकल मैट्रिक्स का उपयोग करके मैट्रिक्स में NA को सेट करना

मान लें कि मेरे पास एक साधारण मैट्रिक्स ("एम") है, जिसे मैं मूल मैट्रिक्स संरचना को बरकरार रखते हुए, एक और लॉजिकल मैट्रिक्स ("i") के साथ इंडेक्स करना चाहता हूं। कुछ इस तरह:

# original matrix 
m <- matrix(1:12, nrow = 3, ncol = 4) 

# logical matrix 
i <- matrix(c(rep(FALSE, 6), rep(TRUE, 6)), nrow = 3, ncol = 4) 

m 
i 

# Desired output: 
matrix(c(rep(NA,6), m[i]), nrow(m), ncol(m)) 
# however this seems bad programming... 

m[i] रिटर्न एक वेक्टर और नहीं एक मैट्रिक्स का उपयोग करना। इसे प्राप्त करने का सही तरीका क्या है?

+1

मैंने निर्दिष्ट परिणाम से एनए असाइन करने का इरादा लिया और तथ्य यह है कि दोनों उसका समाधान और मेरे वैकल्पिक ने एक ही परिणाम दिया। –

उत्तर

7

मूल पोस्टर एक टिप्पणी कहा कि वह बाहर एक समाधान लगा था जोड़ा, तो लगभग तुरंत इसे नष्ट कर दिया:

m[ !i ] <- NA 

मैं एक जवाब है कि एक अलग समाधान is.na<- फ़ंक्शन का उपयोग की पेशकश शुरू कर दिया था:

is.na(m) <- !i 

दोनों समाधान उचित आर कोड प्रतीत होते हैं जो तार्किक अनुक्रमण पर भरोसा करते हैं। (i मैट्रिक्स संरचना वास्तव में पर निर्भर नहीं है। उचित लंबाई और प्रविष्टियों का एक वेक्टर भी m की मैट्रिक्स संरचना को संरक्षित रखेगा।)

संबंधित मुद्दे