जवाबों:
या तो इसे 'स्कैन' के साथ पढ़ें, या मैट्रिक्स पर as.vector () करें। यदि आप इसे पंक्तियों या स्तंभों द्वारा चाहते हैं तो आप पहले मैट्रिक्स को स्थानांतरित करना चाहते हैं।
> m=matrix(1:12,3,4)
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> as.vector(m)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
> as.vector(t(m))
[1] 1 4 7 10 2 5 8 11 3 6 9 12
यदि हम डेटा.फ्रेम के बारे में बात कर रहे हैं, तो आपको खुद से पूछना चाहिए कि एक ही प्रकार के चर हैं? यदि ऐसा है, तो आप rapply का उपयोग कर सकते हैं, या अनलिस्ट कर सकते हैं, क्योंकि डेटा.फ्रेम सूची में हैं, उनकी आत्माओं में गहरा ...
data(mtcars)
unlist(mtcars)
rapply(mtcars, c) # completely stupid and pointless, and slower
से ?matrix
: "एक मैट्रिक्स दो-आयामी 'सरणी' का विशेष मामला है।" आप बस मैट्रिक्स / सरणी के आयाम बदल सकते हैं।
Elts_int <- as.matrix(tmp_int) # read.table returns a data.frame as Brandon noted
dim(Elts_int) <- (maxrow_int*maxcol_int,1)
आप उपयोग कर सकते हैं as.vector()
। ऐसा लगता है कि यह मेरे छोटे बेंचमार्क के अनुसार सबसे तेज़ तरीका है, इस प्रकार है:
library(microbenchmark)
x=matrix(runif(1e4),100,100) # generate a 100x100 matrix
microbenchmark(y<-as.vector(x),y<-x[1:length(x)],y<-array(x),y<-c(x),times=1e4)
पहला समाधान उपयोग करता है as.vector()
, दूसरा इस तथ्य का उपयोग करता है कि एक मैट्रिक्स को मेमोरी में एक सन्निहित सरणी के रूप में संग्रहीत किया जाता है और length(m)
एक मैट्रिक्स में तत्वों की संख्या देता है m
। तीसरा एक array
से एक का तात्पर्य करता है x
, और चौथा समवर्ती कार्य का उपयोग करता है c()
। मैंने भी कोशिश unmatrix
की gdata
, लेकिन यहाँ उल्लेख किया जाना बहुत धीमा है।
यहाँ कुछ संख्यात्मक परिणाम मैंने प्राप्त किए हैं:
> microbenchmark(
y<-as.vector(x),
y<-x[1:length(x)],
y<-array(x),
y<-c(x),
times=1e4)
Unit: microseconds
expr min lq mean median uq max neval
y <- as.vector(x) 8.251 13.1640 29.02656 14.4865 15.7900 69933.707 10000
y <- x[1:length(x)] 59.709 70.8865 97.45981 73.5775 77.0910 75042.933 10000
y <- array(x) 9.940 15.8895 26.24500 17.2330 18.4705 2106.090 10000
y <- c(x) 22.406 33.8815 47.74805 40.7300 45.5955 1622.115 10000
मैट्रिक्स को समतल करना मशीन लर्निंग में एक सामान्य ऑपरेशन है, जहां एक मैट्रिक्स सीखने के लिए मापदंडों का प्रतिनिधित्व कर सकता है, लेकिन एक सामान्य लाइब्रेरी से ऑप्टिमाइज़ेशन एल्गोरिथ्म का उपयोग करता है जो मापदंडों के एक वेक्टर की अपेक्षा करता है। इसलिए मैट्रिक्स (या मैट्रिक्स) को ऐसे वेक्टर में बदलना आम है। यह मानक आर फ़ंक्शन के साथ मामला है optim()
।
आप यहोशू के समाधान का उपयोग कर सकते हैं, लेकिन मुझे लगता है कि आपको आवश्यकता है Elts_int <- as.matrix(tmp_int)
या छोरों के लिए:
z <- 1 ## Initialize
counter <- 1 ## Initialize
for(y in 1:48) { ## Assuming 48 columns otherwise, swap 48 and 32
for (x in 1:32) {
z[counter] <- tmp_int[x,y]
counter <- 1 + counter
}
}
z एक 1d वेक्टर है।