我想知道是否有一种优雅的呼唤方式" self"在R函数中。一个简单的例子是修改日期,让我们说a是int格式的日期(就像你从excel读取的那样)。
a = 41557
a = as.Date(a, origin = "1899-12-30")
然后" a"以适当的格式更新。显然这个例子非常简单,但是在长变量或更复杂的过程的情况下,人们希望使用像#34; 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中是否存在这样的关键字,但它肯定有助于我的大部分代码的可读性。
一如既往,感谢您的帮助!
罗曼。
答案 0 :(得分:2)
您正在寻找的功能是在精彩的magrittr
包中实现的。 CRAN上的版本引入了一个管道运算符%>%
,它将前面的内容作为其后面的第一个参数(默认情况下),或者用前面的语句替换.
。
更多关于你的问题,Github上的版本引入了许多管道变体,包括%<>%
,它就像常规管道一样工作,但包括覆盖分配。
以下陈述是等效的(magrittr
版本&gt; = 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 :(得分:1)
替换功能可以这样使用:
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