的apply 易混淆函式札記 apply系列函式

2021-10-14 17:11:02 字數 2991 閱讀 5004

在r語言中,有些函式由於名字相似,或者功能相似,容易混淆。因此,我計畫記錄一些在r中易混淆的函式,相應的文章題目都是冠以易混淆函式札記。這是這個系列的第一篇文章。

這篇文章中用的資料集是r中自帶的mtcars資料集,可以直接呼叫。由於該資料集列數較多,為了方便理解,我們只取其mpg,cyl,hp列,分別表示汽車每加侖汽油跑的里程(單位mile)、氣缸數、汽車馬力。並將這些列賦值給cars變數

> cars 

> head(cars) # 使用head函式檢視前幾行資料

mpg cyl hp

mazda rx4 21.0 6 110

mazda rx4 wag 21.0 6 110

datsun 710 22.8 4 93

hornet 4 drive 21.4 6 110

hornet sportabout 18.7 8 175

valiant 18.1 6 105

除非特別指出,否則後面的函式都是針對的cars變數的資料。

下面逐個介紹這些函式。

引數解釋

x: 待分析的資料(dataframe格式)

margin: 可選擇兩個引數值1和2。其中,1 表示為對行進行應用,2表示對列進行應用,c(1,2)則表示既對行又對列進行應用

fun: 要應用的函式

比如我要對每列求標準差(r 中 內建了sd函式),並將結果賦值給colsd

# 結果

> colsd

mpg cyl hp

6.026948 1.785922 68.562868

例如我想將所有資料都減去2然後除以10,並將結果賦值給change函式

引數解釋

> $mpg

[1] 1.90 1.90 2.08 1.94 1.67 1.61 1.23 2.24 2.08 1.72 1.58 1.44

[13] 1.53 1.32 0.84 0.84 1.27 3.04 2.84 3.19 1.95 1.35 1.32 1.13

[25] 1.72 2.53 2.40 2.84 1.38 1.77 1.30 1.94

$cyl

[1] 0.4 0.4 0.2 0.4 0.6 0.4 0.6 0.2 0.2 0.4 0.4 0.6 0.6 0.6 0.6

[16] 0.6 0.6 0.2 0.2 0.2 0.2 0.6 0.6 0.6 0.6 0.2 0.2 0.2 0.6 0.4

[31] 0.6 0.2

$hp [1] 10.8 10.8 9.1 10.8 17.3 10.3 24.3 6.0 9.3 12.1 12.1 17.8

[13] 17.8 17.8 20.3 21.3 22.8 6.4 5.0 6.3 9.5 14.8 14.8 24.3

[25] 17.3 6.4 8.9 11.1 26.2 17.3 33.3 10.7

# 結果

> head(change)

$mpg

[1] 1.90 1.90 2.08 1.94 1.67 1.61 1.23 2.24 2.08 1.72 1.58 1.44

[13] 1.53 1.32 0.84 0.84 1.27 3.04 2.84 3.19 1.95 1.35 1.32 1.13

[25] 1.72 2.53 2.40 2.84 1.38 1.77 1.30 1.94

$disp

[1] 15.80 15.80 10.60 25.60 35.80 22.30 35.80 14.47 13.88 16.56

[11] 16.56 27.38 27.38 27.38 47.00 45.80 43.80 7.67 7.37 6.91

[21] 11.81 31.60 30.20 34.80 39.80 7.70 11.83 9.31 34.90 14.30

[31] 29.90 11.90

$hp [1] 10.8 10.8 9.1 10.8 17.3 10.3 24.3 6.0 9.3 12.1 12.1 17.8

[13] 17.8 17.8 20.3 21.3 22.8 6.4 5.0 6.3 9.5 14.8 14.8 24.3

[25] 17.3 6.4 8.9 11.1 26.2 17.3 33.3 10.7

從結果可以看到,返回的是乙個向量,如果我們只是想得到資料,修改列資料,可以使用這個函式,否則使用transform函式。

as.data.frame(change)
> head(change)

mpg cyl hp

[1,] 1.90 0.4 10.8

[2,] 1.90 0.4 10.8

[3,] 2.08 0.2 9.1

[4,] 1.94 0.4 10.8

[5,] 1.67 0.6 17.3

[6,] 1.61 0.4 10.3

有時候我們想對資料按照一定的標準分組,其中標準是某一列的不同水平值,然後對每組資料進行處理。這個和sql中的group by很像。

引數解釋,x,fun函式同上

index 是分類標準所在的列名

注意這裡x和index長度相等

例如我們想將具有相同的氣缸數的汽車的合併在一起,並得到其mpg的平均值(r中的mean函式),並賦值給block變數

# 結果

> block

4 6 8

26.66364 19.74286 15.10000

說明:

基礎補習 PHP易混淆函式的區分

今天看到毛毛蟲給大家做了個空字串和null的區分 感覺對基礎知識不紮實的小鳥 比如我 很有幫助,夜深了,一時來興致,查了很多 權威資料 寫一篇文章貼到這裡和大家一起補習一下基礎知識,當然,我的標題寫的並不嚴謹,內容也只是個人的總結,不足之處請高手多補充,話不多說,正文如下 1.echo和print的...

基礎補習 PHP易混淆函式的區分

今天看到毛毛蟲給大家做了個空字串和null的區分 感覺對基礎知識不紮實的小鳥 比如我 很有幫助,夜深了,一時來興致,查了很多 權威資料 寫一篇文章貼到這裡和大家一起補習一下基礎知識,當然,我的標題寫的並不嚴謹,內容也只是個人的總結,不足之處請高手多補充,話不多說,正文如下 1.echo和print的...

易混淆的幾個概念

不知道行不行,大家看下,指點下 謝謝額 1.抽象方法與介面 第乙個還沒寫,那個寫一下貼上來 2.多型與繼承 3.委託類及說明委託 匿名委託 4.反射的方法訪問另乙個類的方法。一 開發oa系統中有公文流轉流程,其中在公文流轉中有公文審核,公文審核是按級審核的,比如發文單位主管審核後,經理要審核,經理審...