R基礎語法第 1 課---數據類型和賦值語法

按照我們學習其他語言的習慣,都是先學習一門語言的數據類型。

所以我們就先從R語言的數據類型開始啓程,在本篇中,我們將一起學習到以下內容:

  1. R語言數據類型
  2. R語言的三種賦值方法

在這裏插入圖片描述

一、R語言數據類型

在R語言中,沒有類似與C一樣的顯示定義數據類型,R語言通過分配R對象的方式給數據分配內存,其中R對象的數據類型爲其中存儲的變量的數據類型。

常見的基本R數據類型向量有以下六種:

  • Logical(邏輯型)
  • Numeric(數字)
  • Integer(整型)
  • Complex(複合型)
  • Character(字符)
  • Raw(原始型)

同時,除了以上的六種數據類型,R還支持六種特殊的數據類型

  • Vectors 向量
  • Lists 列表
  • Matrices 矩陣
  • Arrays 數組
  • Factors 因子
  • Data Frames 數據幀

接下來,我們通過栗子來學習相關的概念,畢竟如果單靠文字敘述還是顯得比較單調空洞,來一些實例可能容易理解些。

注:
one、所有例子皆在RStudio中運行截圖
two、R語言中的class函數會返回數據類型,以下例子會用到這個函數

1、六種基本類型向量

1.1、Logical(邏輯型)
邏輯型只有兩種取值,True 和False(類似於C++的bool)
在這裏插入圖片描述
1.2、Numeric(數字)
用於存儲數字變量
在這裏插入圖片描述
1.3、Integer(整型)
用於存儲整型變量
在這裏插入圖片描述
1.4、 Complex(複合型)
就是數學中的複數
在這裏插入圖片描述
1.5、Character(字符)
字符變量,聲明時用單引,或者雙引號括出
在這裏插入圖片描述在這裏插入圖片描述
1.6、Raw(原始型)
原始型向量的數據被保存爲

2、六種數據類型
重溫一遍,這六種數據類型分別是:向量(Vectors),列表(list),矩陣(matrices),數組(array),因子(factor),數據幀(data frames)

2.1、 向量
在R語言中,向量類型可以由c()函數進行聲明,同時向量數據可以進行加減乘除,邏輯運算,排序等向量運算

同樣,來一個栗子學習👇

v1 <- 1:10  #創建一個多元素向量
cat(v1,'類型是:',class(v1),'\n')
#1 2 3 4 5 6 7 8 9 10 類型是: integer

v2 <- c('you','me','love',5,TRUE)  #通過c()函數創建向量
cat(v2,'類型是:',class(v2),'\n')
#you me love 5 TRUE 類型是: character

v3 <- seq(5, 9, by = 0.4) #通過seq()函數創建向量
cat(v3,'類型是:',class(v3),'\n')
#5 5.4 5.8 6.2 6.6 7 7.4 7.8 8.2 8.6 9 類型是: numeric

#以下方式訪問向量
print(v2[0]) #注意看v2[0]中存儲的數據
#character(0)

cat(v2[1],'\n') 
#   you 

cat(v3[c(1,3,4)],'\n')
#5 5.8 6.2 

cat(v2[c(-1,-3)],'\n') 
#me 5 TRUE

以上代碼中的print,cat都是輸出函數,#是R語言的註釋,R語言中不支持多行註釋每條輸出函數下的註釋,都是他們對應的輸出。

再來個栗子瞭解下向量的運算吧:

v1 <- 1:10
v2 <- 11:20
print(v1+v2) #加
print(v1-v2) #減
print(v1*v2) #乘
print(v2/v1)  #除
print(v2 %/% v1) #整除
print(v2 %% v1) #求餘
print(v2^v1)  #指數運算

在這裏插入圖片描述

2.2、列表
向量的列表是個神奇的數據類型,一個列表可以包含不同類型的向量,你可以往裏面插入向量,矩陣,函數,甚至是另一個列表。。。

他通過list()函數來聲明。

栗子👇

list1 <- list(c(1,2,3),'哈哈',9,matrix(1:10,nrow = 2,ncol = 5,byrow = TRUE),list(c('a','b','c')))
print(list1)

在這裏插入圖片描述那如何訪問矩陣的元素呢?有兩個方法進行訪問:
方法一:直接用列表名加索引,例 list1[1]
方法二:先給列表元素命名,再利用$符號訪問列表內容,例 list1$2

栗子👇

list1 <- list(c(1,2,3),'哈哈',9,matrix(1:10,nrow = 2,ncol = 5,byrow = TRUE),list(c('a','b','c')))
names(list1) <- c('c','str','num','matrix','list') #給列表元素進行命名
print(list1)

#訪問列表元素
print(list1[1])
print(list1$str)

在這裏插入圖片描述
同樣,我們可以利用 list1[1] <- c(‘1’)的方式進行對列表的更新

利用 list3 <- c(list1,list2)來進行列表的合併

一樣,列表可以轉換爲向量,利用unlist()函數即可,以上面例子爲例:
在這裏插入圖片描述

2.3、矩陣
矩陣通過函數matrix()進行創建,上面列表的例子我們也可以看到創建了個矩陣(不超綱,不超綱),現在就具體講下矩陣的聲明方式。

語法爲:matrix(data, nrow, ncol, byrow, dimnames)
其中data是輸入向量
nrow是創建的行數
ncol是創建的列數
byrow如果爲TRUE,則矩陣按行排列
dimnames是行列名稱

栗子👇:

m1 <- matrix(1:10,nrow = 2,ncol = 5,byrow = TRUE)
m2 <- matrix(11:20,nrow = 2,ncol = 5,byrow = FALSE)
rownames = c("row1", "row2")
colnames = c("col1", "col2", "col3", "col4", "col5")
m3 <- matrix(11:20,nrow = 2,ncol = 5,byrow = TRUE,dimnames = list(rownames,colnames))
print(m1)
print(m2)
print(m3)

在這裏插入圖片描述
矩陣的訪問就類似於C語言的二維數組的訪問,我們可以通過m1[1,1] 獲取元素,取某行可以用m1[1,],取某列可以用m1[,1]。

在這裏插入圖片描述
運算:
矩陣的運算中加減乘除,就是對應元素進行運算。

如果需要計算矩陣乘法,就需要用%*%運算符

在這裏插入圖片描述

轉置:
利用函數 t() 進行轉置
在這裏插入圖片描述

2.4、數組
數組通過array來創建
array( data, dim, dimnames )
其中,data爲輸入向量,
dim爲維度,如(2,3,2)即代表2行,3列,2個矩陣
dimnames爲行列名

栗子👇:

v1 <- 1:5
v2 <- 10:20

row.names <- c('row1','row2','row3')
colnames <- c('col1','col2','col3','col4','col5')

a1 <- array(c(v1,v2),dim = c(3,5,2),dimnames = list(row.names,colnames))
print(a1)

#訪問數組內容
print(a1[1,,1])
print(a1[1,3,1])
print(a1[1,3,2])
print(a1[,1,1]) 
print(a1[,,1])

在這裏插入圖片描述
2.5、因子
R語言中的,factor()可以統計數據的分類,找出輸入向量的所有元素(其實相當於一個集合)

以上面的矩陣爲例:
在這裏插入圖片描述
2.6、數據幀
數據幀是表或者二維陣列結構,其中每一列包含一個變量的值,並且每一行包含來自每一列的一組值。

數據幀的特性:

  • 列名稱應爲非空。
  • 行名稱應該是唯一的。
  • 存儲在數據幀中的數據可以是數字,因子或字符類型。
  • 每個列應包含相同數量的數據項。

栗子👇(輸出太長啦,就不截圖了,自己回家試試):

#創建
daframe <- data.frame(
  da_id = c(1:5),
  da_name = c('新','期','田','貞','好'),
  da_yanzhi = c(10,9,8,9,4)
)
print(daframe)

#得到數據幀的結構
str(daframe)
#獲得數據幀摘要
print(summary(daframe))
#提取數據
r1 <- data.frame(daframe$da_id,daframe$da_yanzhi)  #方法一
print(r1)
r2 <- daframe[1:2,] #方法二,獲取前兩行
print(r2) 
r3 <- daframe[1:2,1:2]  #同理,可以獲得前兩行兩列
print(r3)

#給數據幀添加數據
#1、添加行
daframe1 <- data.frame(
  da_id = 6,
  da_name = '吾',
  da_yanzhi = 10,
  stringsAsFactors = FALSE
)
finalframe <- rbind(daframe,daframe1)
print(finalframe)
#2、添加列
finalframe$height <- c(160,170,180,190,175,178)
print(finalframe)

二、常見的賦值語法

終於將數據類型學完了,接下來就來學習下在R語言中的三種賦值語法

在這裏插入圖片描述在R語言中,實現了左分配和右分配兩種賦值語法

1、左分配:

  • <- 👈這個符號,我們上面都是用的這個運算符來進行賦值
  • = 👈這個符號,很常見,和C,C++等是一樣的
  • <<- 👈這個符號,有點像左移運算符,但是。。並不是哦

2、右分配:

  • -> 👈這個符號,與左分配<-相反的方向,很簡單明瞭
  • ->> 👈這個符號,同上🙂

老規矩,來個栗子👇:

str1 = '兩姓聯姻'
str2 <- '一堂締約'
str3 <<- '良緣永結'
'匹配同稱' -> str4
'永載鴛譜' ->> str5

cat(str1,str2,str3,str4,str5)

在這裏插入圖片描述
OK咯,第一課到此結束,下次繼續~
在這裏插入圖片描述
下一學:R基礎語法第2課—變量與運算符

原文鏈接:https://blog.csdn.net/the_sangzi_home/article/details/105461263

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章