網站首頁 編程語言 正文
前言
了解一門語言,首先要了解它的數據結構。該文主要介紹矩陣、數組和數據框。文章僅供學習使用,歡迎留言交流哦!
一、矩陣(matrix)
1.1矩陣的創建:
矩陣由指定的行(row)和列(column)構成,與高數中的矩陣相同。與之前提到的向量一樣,矩陣只能儲存同種類型的數據。
matrix(? ):創建矩陣
matrix(
data #要創建矩陣的數據,一般為向量
nrow #行數
ncol #列數
byrow = TRUE #若為TRUE,按行填充矩陣,若為FALSE,按列填充矩陣
dimnames #為矩陣個維度命名
)
接下來使用該函數來創建一個3*3的矩陣:
如圖所示,這個由1~9組成的3*3矩陣,左邊指定了行數未指定列數,右邊指定了列數未指定行數,但所得矩陣相同,所以系統會自動識別并填充。上面兩個矩陣都是按列填充矩陣,由于未設置byrow,所以采用默認值FALSE。下面來看一下當byrow為TRUE時,有何不同:
可以看出,byrow為TRUE時,矩陣對數據進行了按行填充。
接下來介紹dimnames函數,為矩陣的行與列命令,第一個向量為行名,第二個向量為列名。
matrix(1:9,ncol = 3,byrow = TRUE,dimnames = list(c("x1","x2","x3"),c("y1","y2","y3")))
得到下圖所示矩陣,與上述矩陣相比,[1,]等變成了x1,y1。
對于已經創建好的向量,可以使用dimnames(),rownames(),colnames()為矩陣進行命名:
創建名為train1,train2的矩陣,train1用dimnames()進行命名,train2分別用rownames(),colnames()對行與列進行命名。
train1 <- matrix(1:9,ncol = 3)
train2 <- matrix(10:18,ncol = 3)
dimnames(train1) <- list(c("x1","x2","x3"),c("y1","y2","y3"))
(rownames(train2) <- c("迪迦","塞羅","特斯拉"))
(colnames(train2) <- c("天王","地虎","二百五"))
所得結果如上圖。同時dimnames(),rownames(),colnames()還能獲取矩陣的名稱,使用dimnames獲取train2的名稱(其他兩個大家可以自己嘗試一下昂),結果如下圖:
1.2訪問矩陣的數據:
matrixname[ridx,cidx]:訪問matrixname矩陣中ridx行cidx列的數據:
例如訪問train1中的第二行第二列數據,為5。
也可以使用負數,效果與向量中使用負數相同,即輸出除某列或某行的其他所有數據。例如輸出train2中除第二行的所有數據。
1.3矩陣的運算:
運算符 | 含義 |
---|---|
X + a | 矩陣X中所有值與標量a相加,還可以使用"-","*","/"運算符 |
X + Y | 對矩陣X與矩陣Y求和,還能使用"-"求矩陣間的差 |
X %*% Y | 求矩陣X與矩陣Y的積 |
函數名 | 函數作用 |
solve() | 從式子Y%*%X=Z中求解X,Y、Z為矩陣 |
nrow() | 求行數 |
ncol() | 求列數 |
dim | 求維度 |
dim <- | 設置對象的維度 |
t() | 求矩陣的轉置矩陣 |
這里就不演示了,大家可以自己嘗試,如果有疑問可以評論交流(一般中午、晚上會看的,歡迎評論哦)。
二、數組(array)
2.1數組的創建:
數組與矩陣、向量不同,它可以存儲不同數據類型的數據。而且數組是多維的,可以是2*3*4維的。創建數組使用array()函數:
array(
data #數據
dim = length(data) #數組維數,若不設置,則為一維數組
dimnames #維度的名稱
)
接下來創建一個3*4的數組和一個2*3*2的數組作為示例:
x <- array(1:12,dim = c(3,4))
y <- array(1:12,dim = c(2,3,2))
所得結果如上圖,左圖很容易看懂,不做過多解釋。右圖根據 y <- array(1:12,dim = c(2,3,2))所得,其中c(2,3,2)的最后一個數字是指右圖中,,1和,,2,可以將其理解為層數,第一層由1,2,3,4,5,6構成,兩行三列。
2.2訪問數組的數據:
與向量相同,使用X[xidx,yidx,zidx...nidx]訪問數組數據:
訪問y第二層中第二行第二列的數據,結果如下:
三、數據框
3.1數據框的創建:
數據框類似于表格,例如上面矩陣運算中所展示的表格??梢允褂胐ata.frame()創建數據框
data.frame(
#以value或name = value的形式展現的數據值
)
可能有點看不懂,沒有關系,我們來看幾個例子就可以了。創建一個名為名人的數據框:
名人 <-data.frame(美女 = c("西施","王昭君","貂蟬"),名將 = c("荊軻","要離","岳飛"))
x <- 1:5
y <- 6:10
z <- 11:15
d <- data.frame(x,y,z)
運行結果如上圖,數據框會將你輸入的數據按列排布,做出一個類似表格的形式。在數據框中也可以使用rownames(),colnames()等函數,下面以rownames做一個示例:?
rownames(d) <- c("three","four","two","five","one")
數據框的數據訪問于上述差不多,大家可以自己嘗試一下。
總結
原文鏈接:https://blog.csdn.net/ouyangk1026/article/details/121582431
相關推薦
- 2022-01-12 cesium polygon添加邊界線不起作用
- 2023-04-02 淺談Android開發Webview的Loading使用效果_Android
- 2022-06-04 Python正則表達式中flags參數的實例詳解_python
- 2022-12-04 React18?useState何時執行更新及微任務理解_React
- 2022-04-18 python函數的默認參數請勿定義可變類型詳解_python
- 2022-01-03 踩坑解決mongoose對已經存在的集合查詢,查詢條件不起限制作用的問題
- 2022-09-21 ubuntu22通過docker安裝wechat啟動后無界面的問題及解決方法_docker
- 2023-01-20 基于?Dubbo?Admin?動態調整服務超時時間的操作步驟_其它綜合
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支