R語言資料型別


通常,在使用任何程式設計語言進行程式設計時,需要使用各種變數來儲存各種資訊。變數只不過是儲存儲存值的記憶體位置。 這意味著,當您建立變數時,可以在記憶體中保留一些空間用來儲存某些值。

可能希望儲存各種資料型別的資訊,如字元,寬字元,整數,浮點,雙浮點,布林等。根據變數的資料型別,作業系統會分配記憶體並決定在保留這些記憶體。

R語言與其他程式設計語言(如C語言Java)相反,變數不會被宣告為某些資料型別。 變數被分配給R物件,並且R物件的資料型別轉變為變數的資料型別。 有很多型別的R物件。 常用R物件是 -

  • 向量
  • 列表
  • 矩陣
  • 陣列
  • 因子
  • 資料影格

這些物件中最簡單的是向量物件,並且向量物件有六種資料型別的原子向量,也稱為六類向量。 其他R物件是建立在原子向量之上的。六類向量型別如下表所示 -

資料型別 範例 驗證程式碼 輸出結果
邏輯 TRUE, FALSE v <- TRUE ; print(class(v)); [1] "logical"
數位值 12.3, 5, 999 v <- 23.5 ; print(class(v)); [1] "numeric"
整數 2L, 34L, 0L v <- 2L ; print(class(v)); [1] "integer"
複數 3 + 2i v <- 2+5i ; print(class(v)); [1] "complex"
字元 ‘a’ , ‘「good」, 「TRUE」, ‘23.4’ v <- "TRUE" ; print(class(v)); [1] "character"
原生 "Hello"儲存值為: 48 65 6c 6c 6f v <- charToRaw("Hello"); print(class(v)); [1] "raw"

R程式設計中,非常基本的資料型別是叫作向量的R物件,它們儲存不同類的元素,如上所示。 請注意在R語言中,型別的數量不僅限於上述六種型別。 例如,我們可以使用許多原子向量並建立一個陣列,其型別將成為陣列。

向量

當要建立具有多個元素的向量時,應該使用c()函式,表示將元素組合成一個向量。

# Create a vector.
apple <- c('red','green',"yellow");
print(apple);

# Get the class of the vector.
print(class(apple));

上面範例程式碼,執行結果如下 -

> apple <- c('red','green',"yellow");
> print(apple);
[1] "red"    "green"  "yellow"
> print(class(apple));
[1] "character"
>

列表

列表是一個R物件,它可以包含許多不同型別的元素,如向量,函式,甚至其中的另一個列表。

# Create a list.
list1 <- list(c(2,5,3),21.3,sin);

# Print the list.
print(list1);

上面範例程式碼,執行結果如下 -

[[1]]
[1] 2 5 3

[[2]]
[1] 21.3

[[3]]
function (x)  .Primitive("sin")

矩陣

矩陣是二維矩形資料集。 它可以使用向量輸入到矩陣函式來建立。

# Create a matrix.
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)

當執行上述程式碼時,會產生以下結果 -

     [,1] [,2] [,3]
[1,] "a"  "a"  "b"
[2,] "c"  "b"  "a"

陣列

矩陣只能有兩個維度,陣列可以是任意數量的維數。陣列函式採用一個dim屬性,建立所需的維數。 在下面的例子中,我們建立一個有兩個元素的陣列,每個元素都是3x3個矩陣。

# Create an array.
a <- array(c('green','yellow'),dim = c(3,3,2))
print(a)

當執行上述程式碼時,會產生以下結果 -

, , 1

     [,1]     [,2]     [,3]
[1,] "green"  "yellow" "green"
[2,] "yellow" "green"  "yellow"
[3,] "green"  "yellow" "green"

, , 2

     [,1]     [,2]     [,3]
[1,] "yellow" "green"  "yellow"
[2,] "green"  "yellow" "green"
[3,] "yellow" "green"  "yellow"

因子

因子是使用向量建立的R物件。 它將向量儲存在向量中的元素的不同值作為標籤。標籤始終是字元,無論它是輸入向量中是數位,還是字元或布林等。它們在統計建模中很有用。

因子使用factor()函式建立。nlevels函式給出了級別的計數。

# Create a vector.
apple_colors <- c('green','green','yellow','red','red','red','green')

# Create a factor object.
factor_apple <- factor(apple_colors)

# Print the factor.
print(factor_apple)
print(nlevels(factor_apple))

當執行上述程式碼時,會產生以下結果 -

[1] green  green  yellow red    red    red   green 
Levels: green red yellow
# applying the nlevels function we can know the number of distinct values
[1] 3

資料影格

資料影格是表格資料物件。與資料影格中的矩陣不同,每列可以包含不同的資料模式。 第一列是數位,而第二列可以是字元,第三列可以是邏輯型別。它是一個長度相等的向量列表。

資料影格使用data.frame()函式建立。

# Create the data frame.
BMI <-     data.frame(
   gender = c("Male", "Male","Female"), 
   height = c(152, 171.5, 165), 
   weight = c(81,93, 78),
   Age = c(42,38,26)
)
print(BMI)

當執行上述程式碼時,會產生以下結果 -

  gender height weight Age
1   Male  152.0     81  42
2   Male  171.5     93  38
3 Female  165.0     78  26