通常,在使用任何編程語言進行編程時,需要使用各種變量來存儲各種信息。變量只不過是保存存儲值的內(nèi)存位置。 這意味著,當您創(chuàng)建變量時,可以在內(nèi)存中保留一些空間用來存儲某些值。
可能希望存儲各種數(shù)據(jù)類型的信息,如字符,寬字符,整數(shù),浮點,雙浮點,布爾等。根據(jù)變量的數(shù)據(jù)類型,操作系統(tǒng)會分配內(nèi)存并決定在保留這些內(nèi)存。
R語言與其他編程語言(如C語言和Java)相反,變量不會被聲明為某些數(shù)據(jù)類型。 變量被分配給R對象,并且R對象的數(shù)據(jù)類型轉(zhuǎn)變?yōu)樽兞康臄?shù)據(jù)類型。 有很多類型的R對象。 常用R對象是 -
這些對象中最簡單的是向量對象,并且向量對象有六種數(shù)據(jù)類型的原子向量,也稱為六類向量。 其他R對象是建立在原子向量之上的。六類向量類型如下表所示 -
| 數(shù)據(jù)類型 | 示例 | 驗證代碼 | 輸出結(jié)果 |
|---|---|---|---|
| 邏輯 | TRUE, FALSE | v <- TRUE ; print(class(v)); |
[1] "logical" |
| 數(shù)字值 | 12.3, 5, 999 | v <- 23.5 ; print(class(v)); |
[1] "numeric" |
| 整數(shù) | 2L, 34L, 0L | v <- 2L ; print(class(v)); |
[1] "integer" |
| 復(fù)數(shù) | 3 + 2i | v <- 2+5i ; print(class(v)); |
[1] "complex" |
| 字符 | ‘a(chǎn)’ , ‘“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編程中,非常基本的數(shù)據(jù)類型是叫作向量的R對象,它們保存不同類的元素,如上所示。 請注意在R語言中,類型的數(shù)量不僅限于上述六種類型。 例如,我們可以使用許多原子向量并創(chuàng)建一個數(shù)組,其類型將成為數(shù)組。
當要創(chuàng)建具有多個元素的向量時,應(yīng)該使用c()函數(shù),表示將元素組合成一個向量。
# Create a vector.
apple <- c('red','green',"yellow");
print(apple);
# Get the class of the vector.
print(class(apple));
上面示例代碼,執(zhí)行結(jié)果如下 -
> apple <- c('red','green',"yellow");
> print(apple);
[1] "red" "green" "yellow"
> print(class(apple));
[1] "character"
>
列表是一個R對象,它可以包含許多不同類型的元素,如向量,函數(shù),甚至其中的另一個列表。
# Create a list.
list1 <- list(c(2,5,3),21.3,sin);
# Print the list.
print(list1);
上面示例代碼,執(zhí)行結(jié)果如下 -
[[1]]
[1] 2 5 3
[[2]]
[1] 21.3
[[3]]
function (x) .Primitive("sin")
矩陣是二維矩形數(shù)據(jù)集。 它可以使用向量輸入到矩陣函數(shù)來創(chuàng)建。
# Create a matrix.
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)
當執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果 -
[,1] [,2] [,3]
[1,] "a" "a" "b"
[2,] "c" "b" "a"
矩陣只能有兩個維度,數(shù)組可以是任意數(shù)量的維數(shù)。數(shù)組函數(shù)采用一個dim屬性,創(chuàng)建所需的維數(shù)。 在下面的例子中,我們創(chuàng)建一個有兩個元素的數(shù)組,每個元素都是3x3個矩陣。
# Create an array.
a <- array(c('green','yellow'),dim = c(3,3,2))
print(a)
當執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果 -
, , 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"
因子是使用向量創(chuàng)建的R對象。 它將向量存儲在向量中的元素的不同值作為標簽。標簽始終是字符,無論它是輸入向量中是數(shù)字,還是字符或布爾等。它們在統(tǒng)計建模中很有用。
因子使用factor()函數(shù)創(chuàng)建。nlevels函數(shù)給出了級別的計數(shù)。
# 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))
當執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果 -
[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
數(shù)據(jù)幀是表格數(shù)據(jù)對象。與數(shù)據(jù)幀中的矩陣不同,每列可以包含不同的數(shù)據(jù)模式。 第一列是數(shù)字,而第二列可以是字符,第三列可以是邏輯類型。它是一個長度相等的向量列表。
數(shù)據(jù)幀使用data.frame()函數(shù)創(chuàng)建。
# 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)
當執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果 -
gender height weight Age
1 Male 152.0 81 42
2 Male 171.5 93 38
3 Female 165.0 78 26