मैट्रिक्स को एक कॉलम में कैसे सब्मिट करें, मैट्रिक्स डेटा प्रकार बनाए रखें, पंक्ति / कॉलम नाम बनाए रखें?


84

जब मैं किसी एकल कॉलम के लिए मैट्रिक्स को सब्मिट करता हूं, तो परिणाम क्लास न्यूमेरिक का होता है, न कि मैट्रिक्स का (यानी मायमैट्रिक्स [, 5] पांचवा कॉलम सब्मिट करने का)। क्या किसी एकल कॉलम को कम करने, मैट्रिक्स प्रारूप को बनाए रखने और कुछ जटिल किए बिना पंक्ति / स्तंभ नामों को बनाए रखने का एक कॉम्पैक्ट तरीका है:

matrix( myMatrix[ , 5 ] , dimnames = list( rownames( myMatrix ) , colnames( myMatrix )[ 5 ] )

जवाबों:


122

drop=FALSEकरने के लिए तर्क का उपयोग करें [

m <- matrix(1:10,5,2)
rownames(m) <- 1:5
colnames(m) <- 1:2
m[,1]             # vector
m[,1,drop=FALSE]  # matrix

मैंने शपथ ली थी कि मैंने इसे अभी हाल ही में देखा है, लेकिन हो सकता है कि यह एक समान डाटाफ्रेम व्यवहार हो, जिस पर सवाल उठाया जा रहा है: stackoverflow.com/questions/6941985/…
IRTFM

5
यदि आप केवल पहले आयाम द्वारा अनुक्रमण करना चाहते हैं, तो क्या आप निम्नानुसार ड्रॉप का उपयोग कर सकते हैं:m[1,,drop=FALSE]
केविन बुलघेई

सांख्यिकीय आधार पर एक उदाहरण देने के लिए, कुक डी की दूरी का उपयोग करना, और फिर कट ऑफ मान के आधार पर मानों का चयन करना जैसे कि 0.1, यह सापेक्ष डेटासेट में उनकी संबंधित संख्या के साथ रसोइडी के मूल्यों का परिणाम देगा cooksd<-as.data.frame(cooks.distance(ft1)) cooksD_outliers<-cooksd[cooksd>0.1,drop=FALSE,]
एलियास एस्टैटॉस्टीयू

परिणाम <-apply (temp, 1, function (x) tapply (x, genesymbol, function (x) माध्य (x, na.rm = T))) उस समस्या से कैसे निपटें जो परिणाम एक सरणी है, लेकिन वास्तव में मैं चाहता हूं कि यह एक कॉलम डेटा फ्रेम हो? धन्यवाद
गुओ

@ शिखेंगगूओ: आपको एक नया प्रश्न पूछना चाहिए।
जोशुआ उलरिच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.