網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
前言
在R語(yǔ)言中,apply系列函數(shù)可以對(duì)向量、矩陣、數(shù)據(jù)框一次性對(duì)整體數(shù)據(jù)應(yīng)用函數(shù)運(yùn)算,非常方便
一、apply()函數(shù)
定義:apply()函數(shù)按矩陣的行或列方向應(yīng)用指定函數(shù)。
apply(
x # 數(shù)組或矩陣
MARGIN #應(yīng)用函數(shù)的方向,1行2列
FUN # 應(yīng)用的函數(shù)
)
# 返回值根據(jù)數(shù)據(jù)Data的數(shù)據(jù)類型與Fun的返回值自動(dòng)判斷返回的數(shù)據(jù)類型
這里舉個(gè)例子:
s <- matrix(1:9,ncol = 3)
apply(s,1,sum)
apply(s,2,sum)
即可得到下列結(jié)果:
apply(s,1,sum)
[1] 12 15 18
apply(s,2,sum)
[1] ?6 15 24
在舉一個(gè)R語(yǔ)言自帶的鳶尾花數(shù)據(jù)集例子:
apply(iris[,1:4],2,sum)
結(jié)果如下:
apply(iris[,1:4],2,sum)
Sepal.Length ?Sepal.Width Petal.Length ?Petal.Width?
? ? ? ?876.5 ? ? ? ?458.6 ? ? ? ?563.7 ? ? ? ?179.9?
如果小伙伴們對(duì)鳶尾花數(shù)據(jù)集不了解可以輸入iris查看。
于此同時(shí)R語(yǔ)言中還定義了rowSums(),rowMeans(),colSums(),colMeans()函數(shù)對(duì)行列進(jìn)行求和、均值的函數(shù)。使用方式也很簡(jiǎn)單。
二、lapply()函數(shù)
定義:lapply()函數(shù)以列表的形式返回函數(shù)的結(jié)果
lapply(
? X #向量、列表、表達(dá)式、數(shù)據(jù)庫(kù)
? FUN #應(yīng)用的函數(shù)
? ... #額外參數(shù),會(huì)被傳遞給fun函數(shù)
)
繼續(xù)使用鳶尾花數(shù)據(jù)集舉例:
lapply(iris[,1:4],mean)
結(jié)果如下:
lapply(iris[,1:4],mean)
$Sepal.Length
[1] 5.843333$Sepal.Width
[1] 3.057333$Petal.Length
[1] 3.758$Petal.Width
[1] 1.199333
可以看到結(jié)果以列表的形式返回,可以使用unlist()函數(shù)將結(jié)果轉(zhuǎn)換為向量。
unlist(
#將列表轉(zhuǎn)換為向量
X #R對(duì)象
recursive = FALSE #是否對(duì)x中的列表進(jìn)行遞歸轉(zhuǎn)換
use.names = TRUE #是否保留列表中的值名稱
)
unlist(lapply(iris[,1:4],mean))
結(jié)果如下所示:
unlist(lapply(iris[,1:4],mean))
Sepal.Length ?Sepal.Width Petal.Length ?Petal.Width?
? ? 5.843333 ? ? 3.057333 ? ? 3.758000 ? ? 1.199333
三、sapply()函數(shù)
sapply()函數(shù)與lapply()函數(shù)類似,其結(jié)果以矩陣、向量的數(shù)據(jù)類型返回。
定義:向列表,向量、表達(dá)式數(shù)據(jù)等應(yīng)用指定函數(shù),然后以向量或矩陣形式返回結(jié)果。
sapply(
? X #向量、列表、表達(dá)式、數(shù)據(jù)庫(kù)
? FUN #應(yīng)用的函數(shù)
? ... #額外參數(shù),會(huì)被傳遞給fun函數(shù)
)
同樣使用鳶尾花數(shù)據(jù)集作為例子:
sapply(iris[,1:4], sum)
結(jié)果如下:
sapply(iris[,1:4], sum)
Sepal.Length ?Sepal.Width Petal.Length ?Petal.Width?
? ? ? ?876.5 ? ? ? ?458.6 ? ? ? ?563.7 ? ? ? ?179.9?
當(dāng)fun函數(shù)只有一個(gè)返回值,sapply()函數(shù)返回的就是包含這些值的向量。如果fun函數(shù)的結(jié)果時(shí)大于1的向量,則sapply()函數(shù)會(huì)返回矩陣。
如下例:
x <- sapply(iris[,1:4], function(x) {<!--{C}%3C!%2D%2D%20%2D%2D%3E-->x >3})class(x)
結(jié)果如下:
class(x)
[1] "matrix"
數(shù)據(jù)如下圖所示:
四、tapply()函數(shù)
定義:根據(jù)給定的標(biāo)準(zhǔn),對(duì)向量中保存的數(shù)據(jù)進(jìn)行分組,然后對(duì)各分組應(yīng)用指定函數(shù),并返回結(jié)果。
tapply(
? X #向量
? INDEX #數(shù)據(jù)分組索引
? FUN #應(yīng)用的函數(shù)
? ... #額外參數(shù)
)
舉個(gè)例子:
tapply(1:10,rep(1:2,5),sum)
結(jié)果如下圖:
tapply(1:10,rep(1:2,5),sum)
?1 ?2?
25 30?
例中1:10表示的是數(shù)據(jù)1到10,rep(1:2,5)表示將1到2重復(fù)5次。1,3,5,7,9屬于1分組,2,4,6,8,10屬于2分組。對(duì)它們進(jìn)行求和,得到上訴結(jié)果。
以鳶尾花數(shù)據(jù)集舉例:
tapply(iris$Sepal.Length,iris$Species,sum)
結(jié)果如下所示:
tapply(iris$Sepal.Length,iris$Species,sum)
? ? setosa versicolor ?virginica?
? ? ?250.3 ? ? ?296.8 ? ? ?329.4?
建立一個(gè)銷售數(shù)據(jù):
m <- matrix(1:8,ncol = 2,
dimnames = list(c("春","夏","秋","冬"),
c("female","male")))
對(duì)該數(shù)據(jù)秋上下半年與性別分別秋銷售之和。
代碼如下:
tapply(m, list(c(1,1,2,2,1,1,2,2),
c(1,1,1,1,2,2,2,2)), sum)
結(jié)果如下所示:
tapply(m, list(c(1,1,2,2,1,1,2,2),
+ ? ? ? ? ? ? ? ?c(1,1,1,1,2,2,2,2)), sum)
? 1 ?2
1 3 11
2 7 15
這里是將各個(gè)數(shù)據(jù)的位置建立索引進(jìn)行分組,而后進(jìn)行求和。
五、mapply()函數(shù)
定義:以列表或向量形式給出的參數(shù)傳遞給指定函數(shù),并返回函數(shù)執(zhí)行結(jié)果。
mapply(
? FUN #應(yīng)用的函數(shù)
? ... #待傳遞的參數(shù)
)
繼續(xù)使用鳶尾花數(shù)據(jù)集舉例(哈哈哈):
mapply(sum,iris[,1:4])
結(jié)果如下:
mapply(sum,iris[,1:4])
Sepal.Length ?Sepal.Width Petal.Length ?Petal.Width?
? ? ? ?876.5 ? ? ? ?458.6 ? ? ? ?563.7 ? ? ? ?179.9?
總結(jié)
原文鏈接:https://blog.csdn.net/ouyangk1026/article/details/122535256
相關(guān)推薦
- 2022-09-12 Windows系統(tǒng)下安裝tensorflow的配置步驟_python
- 2023-01-01 詳解Python如何實(shí)現(xiàn)輸出顏色字體到終端界面_python
- 2022-04-17 python中random隨機(jī)函數(shù)詳解_python
- 2022-10-18 shell腳本批量將文件復(fù)制到指定的文件夾下_linux shell
- 2023-03-20 C#?BeginInvoke實(shí)現(xiàn)異步編程方式_C#教程
- 2022-04-20 python實(shí)現(xiàn)Simhash算法_python
- 2022-07-30 react中受控組件與非受控組件
- 2023-05-20 openGauss數(shù)據(jù)庫(kù)共享存儲(chǔ)特性概述_數(shù)據(jù)庫(kù)其它
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支