Amazon Ads

2014年3月21日 星期五

【R筆記】初探R模式(mode)與類別(class)

R中,每一個物件(object)都有一個模式(mode),它在說明資料是以何種型式儲存在記憶體中。

若要取得物件的模式,可以使用mode(),這個函數,它需要一個R物件當做參數,下列是一些例子: 1.41421,在 R 的模式是numberic
> mode(1.141421)
[1] "numeric"
"Hello R"的模式是character
> mode("Hello R")
[1] "character"
當我們指定了一個向量(Vector)後,它的模式是由它所包含的元素來決定的:
> n <- c(1, 2, 3, 4, 5)
> mode(n)
[1] "numeric"
> n1 <- c("a", "b", "c")
> mode(n1)
[1] "character"
上列n變數所包含的元素的模式皆為numeric所以它的模式是numeric

再來看看n1,它所包含的元素的模式皆為character所以它的模式是character

鏘鏘鏘!在【R筆記】初探R資料結構-向量(Vector)有提到,在向量中所有的元素,其資料型別都要一樣,指的就是元素所有的模式。 接著,我們來看看列表(List)的模式為何:
> list2 <- list(1, 2, 3, "x", "y", "z")
> mode(list2)
[1] "list"
因為我們在【R筆記】初探R資料結構-列表(List)中有提到,在列表所包含的元素,其模式可以不一樣,所以使用mode()函式看模式時,有另一種list的模式。

最後,我們常常在使用的各種函式,也有自己的模式,如print()函式的模式是function
> mode(print)
[1] "function"
R中,每一個物件也有一個類別(class),相對於模式來講,它具備的是比較抽象的概念,R根據一個物件類別,來決定以何種方式來做資料處理。 如我們看一個內建的資料集mtcars的模式和類別:
> mode(mtcars)
[1] "list"
> class(mtcars)
[1] "data.frame"
上列結果說明,mtcars這個資料集是以list型式儲存在記憶體中,而我們要處理它時,如使用print()函式將mtcars輸出,R會依據它的類別來做合適的處理。

若你想進一步認識R,我推薦R 錦囊妙計