每日R語言原始碼分析 plyr arrange

2021-10-09 04:37:20 字數 1139 閱讀 1912

在r-studio中輸入 >plyr::arrange可檢視如下arrange函式原始碼

function

(df,

...)

unrowname(df[ord,

, drop =

false])

}# #

首先關注函式的引數部分

function

(df,

...)

形參df 待傳入r語言的dataframe資料;「…」則為待解析的引數列表。

進入函式體,首先第一行為:

stopifnot(is.data.frame(df)

)

用於判斷傳入的實參是否為dataframe,否則stop。

第二行是該函式的核心

ord <- eval(substitute(order(

...)

), df, parent.frame(

))

order()函式輸入數值型列表(list),返回list中元素由低到高的序號,比如:

> order(mtcars$mpg)

>[1

]151624717

3114

2322

2912[12

]13116

510253012

432[23

]2139

8272619

2818

20

substitute()和eval()涉及元程式設計的概念(metaprogramming),即將語句作為輸入,生成新的**,實現需要的功能

在r語言中substitute()可將…部分的內容進行解析,解析的環境為df(即輸入的資料框)。eval()執行解析得到的函式。函式體中第二行即執行取df中的某些列,對這些列執行order(),並將返回的序號儲存在ord變數中。

函式體的最後一行即返回按某些列排序後的資料框。

最後,該段**較易理解,最大的困難是對於r語言元程式設計的理解。後續將在部落格中對r語言/lisp語言中的元程式設計概念進行總結,歡迎後續關注。

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

R語言 3 0 1 原始碼已經提交到 Github

r語言最新的 3.0.1 版本原始碼已經提交到 github 上,位址是 r語言是主要用於統計分析 繪圖的語言和操作環境。r本來是由來自紐西蘭奧克蘭大學的ross ihaka和robert gentleman 開發。也因此稱為r 現在由 r開發核心團隊 負責開發。r是基於s語言的乙個gnu專案,所以...

思科VPP原始碼分析(dpo機制原始碼分析)

vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...