উত্তর:
হয় এটি 'স্ক্যান' দিয়ে পড়ুন, বা ম্যাট্রিক্সে 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
যদি আমরা ডেটা.ফ্রেম সম্পর্কে কথা বলি, তবে আপনার নিজের জিজ্ঞাসা করা উচিত একই ধরণের পরিবর্তনশীল? যদি কেসটি হয় তবে আপনি র্যাপলি বা তালিকাভুক্তি ব্যবহার করতে পারেন, যেহেতু ডেটা.ফ্রেমগুলি তালিকাভুক্ত, তাদের আত্মার গভীরে ...
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
ম্যাট্রিক্স সমতল করা মেশিন লার্নিংয়ের একটি সাধারণ ক্রিয়াকলাপ, যেখানে কোনও ম্যাট্রিক্স শিখার জন্য পরামিতিগুলি উপস্থাপন করতে পারে তবে জেনেরিক লাইব্রেরি থেকে একটি অপ্টিমাইজেশন অ্যালগরিদম ব্যবহার করে যা প্যারামিটারগুলির একটি ভেক্টর প্রত্যাশা করে। সুতরাং ম্যাট্রিক্স (বা ম্যাট্রিক্স) যেমন ভেক্টরে রূপান্তর করা সাধারণ is এটি স্ট্যান্ডার্ড আর ফাংশনের ক্ষেত্রে 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 হ'ল 1 ডি ভেক্টর।
পরিবর্তে যদি আপনার কাছে এমন একটি ডেটা ফ্রেম (ডিএফ) থাকে যার একাধিক কলাম ছিল এবং আপনি ভেক্টরাইজ করতে চান তবে আপনি এটি করতে পারেন
as.matrix (df, ncol = 1)