簡體   English   中英

在R函數中調用“self”作為參數

[英]Call “self” in R function as an argument

我想知道是否有一種優雅的方式在R函數中調用“self”。 一個簡單的例子是修改日期,假設a是一個int格式的日期(就像你從excel讀取時)。

a = 41557
a = as.Date(a, origin = "1899-12-30")

然后用適當的格式更新“a”。 顯然這個例子非常簡單,但是在長變量或更復雜的過程中,人們希望使用像“self”這樣的東西。 R中是否存在這樣的東西。自我簡單的意思是將變量放在=符號的左邊部分。

a = 41557
a = as.Date(self, origin = "1899-12-30") # what to use for self. 

作為第一個提示,我發現(我認為)某些函數可以使用“< - ”運算符以某種方式調用“self”,例如:

"minc<-" <- function(x, value){x*value}

給:

a = 2
a = minc(12)
# a = 24, which is basically : a = self*12

我不知道R中是否存在這樣的關鍵字,但它肯定有助於我的大多數代碼的可讀性。

一如既往,感謝您的幫助!

羅曼。

您正在尋找的功能是在精彩的magrittr包中實現的。 CRAN上的版本引入了一個管道運算符%>% ,它將前面的內容作為其后面的第一個參數(默認情況下),或者替換a . 與前面的陳述。

更重要的是,Github上的版本引入了許多管道變體,包括%<>% ,它與常規管道一樣,但包括覆蓋分配。

以下語句是等效的( magrittr version> = 1.1.0,在Github上可用, devtools::install_github("smbache/magrittr") ):

a = as.Date(a, origin = "1899-12-30")
a = a %>% as.Date(origin = "1899-12-30")
a %<>% as.Date(., origin = "1899-12-30")
a %<>% as.Date(origin = "1899-12-30")

替換功能可以像這樣使用:

1)as.Date

"as.Date<-" <- function(x, value) as.Date(x, origin = value)

現在測試一下:

a <- 41557
as.Date(a) <- "1899-12-30"
a
## [1] 2013-10-10

2)minc

"minc<-" <- function(x, value) x * value

現在測試一下:

a <- 2
minc(a) <- 12
a
## [1] 24

注意:如果您願意,可以使用self代替x

"as.Date<-" <- function(self, value) as.Date(self, origin = value)
"minc" <- function(self, value) self * value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM