2013-03-09 18 views
3

是否有簡潔(還相當徹底的)教程找人習慣在MATLAB工作,用於寫作R代碼裏面,以加快。學習R代表有人用MATLAB和混亂與R數據類型

這是我想到的一個特殊問題:從我對R文檔和教程的有限經驗來看,我對R中的數據類型以及如何操作有很多困惑。例如,什麼是矢量,矩陣,列表,數據框等,它們是如何相關的。我還沒有找到清楚解釋基本數據類型的來源,以至於我想知道該語言是否由設計模糊不清。

+1

您可能會發現這個網站有用http://mathesaurus.sourceforge.net/octave-r.html – babelproofreader 2013-03-09 15:54:05

+1

介紹至R由Longhow林解釋數據結構做大部分的幫助可從R主頁。 R首頁>手冊>貢獻文檔 – 2013-03-09 15:54:31

+1

另請參閱http://cran.r-project.org/doc/contrib/Hiebeler-matlabR.pdf – 2013-03-10 02:57:43

回答

7

它總是很難,如果你主要是熟悉的只有一個編程語言當您嘗試學習另一種是因爲你希望想通過不同的方式的問題,即工作方式不同,而這些不正確的預期會導致問題。要爲來自其他各種語言的學生編寫一本適合的入門指南是非常困難的(「你會認爲你應該做X,但是在R中,你應該做Y')。不過,我可以向你保證,R的設計不是模棱兩可的。

大多數情況下,你只是將不得不得到一個入門指南,並通過它苦戰。起初,這將是很多工作,並令人沮喪,但這是唯一的方法。最後,它會變得更容易。也許我可以告訴你幾件事情來啓動這個過程:

  • a list只是一個有序的元素集。這可以是任何長度,幷包含任何舊類型的東西。例如,x <- list(5, "word", TRUE)
  • a vector也是一組有序的元素。雖然它可以是任何長度,但元素必須全部是相同的類型。例如,x <- c(3,5,4)x <- c("letter", "word", "a phrase"),x <- c(TRUE, FALSE, FALSE, TRUE)
  • 一個matrix是向量,其中所有分量矢量具有相同的長度和類型的向量。例如,x <- matrix(c("a", "b", "c", "d"), ncol=2)
  • 一個data.frame是向量,其中所有組分的載體是相同的長度,但不必須是相同的類型的列表。例如,x <- data.frame(category=c("blue", "green"), amount=c(5, 30), condition.met=c(TRUE, FALSE))

(響應於評論:)

  • 功能?c級聯; c(c("a", "b"), c("c", "d")),不會創建矩陣,而是從兩個較短的向量創建更長的向量。函數?cbind(將列綁定到一起)或rbind()(將行綁定在一起)將創建矩陣。
  • 我不知道會輸出任何對象類型的單個函數。最接近的東西可能是?class,但是這有時會給出例如「整數」,我認爲你想要「矢量」。也有mode()typeof(),這是相關的,但不是你想要的。瞭解更多關於這些herehere之間的區別。要檢查對象是否爲特定類型,可以使用is.<specific type>(),例如?is.vector
  • 裹脅(即,'cast')一個對象到一個特定的類型,你可以使用as.vector(),但是這隻有在滿足條件(例如,上面提到的)時纔會起作用。
+2

+1作爲一個在我來到R的時候熟悉Matlab的人(雖然我在很多年前曾使用過S),但我肯定會建議您去掌握R列表以及它們是如何工作的。從某種意義上說,他們是R的通用主力。認爲我不需要擔心他們,很可能使我在R方面的進步遠遠超過我所願意承認的。尤其是,*數據框*當你意識到它們是列表時更有意義。另一件重要的事情就是要掌握*編寫小函數作爲其他函數的參數*;這是R.的一個標準範例。 – 2013-03-10 02:53:04

+0

謝謝。所以我假設c(c(「a」,「b」),c(「c」,「d」))應該和你定義的矩陣是同一個對象。另外,是否有一個函數可以輸出對象的類型?按類型,我的意思是列表/矢量/矩陣/數據框(不是雙/整數...)。另一個問題:是否可以在這些類型之間進行投射?例如,如果我定義了x < - list(1,2,3),我可以將它轉換爲矢量嗎? – passerby51 2013-03-10 04:41:49