关于Twitter,我询问了以下内容:
在RStudio中,有一种简便的方法可以将存储在最后的结果
.Last.value
成功能。说我做了:
tbl <- CreateTable(x)
。我现在想执行
View(tbl)
,但要减少键入。只需输入
.View
或某物。那可能吗? #rstats #rstudio
也许有一般的方法可以做到这一点?
[这里有几种方法,这些都是奇怪的东西,所以我希望您将其保留作交互式使用,不要在RProfile中放置任何内容,也不要使用这些方法共享代码:)。
1-创建.
的绑定
.
将是.Last.Value
的快捷方式,从而节省了大多数键入操作。magrittr管道和功能序列仍然可以使用,purrr lambdas也可以。
makeActiveBinding(".", function() .Last.value, .GlobalEnv)
4
sqrt(.) # 2
[如果您有µ
,λ
或其他兼容的特殊字符,可在键盘上轻松访问,则最好改用它。
2--入侵print.function
我们可以破解print.function
,因此它将在最后一个值上运行该函数。
这里我不能使用.Last.value
,因为它是函数本身的值,所以我需要重新执行上一个调用,因此在某些情况下它可能很慢。
print.function <- function(x){
tf <- tempfile()
savehistory(tf)
last_calls <- parse(text=tail(readLines(tf),2))
if(as.list(last_calls[[2]])[[1]] == quote(print))
base:::print.function(x) else print(x(eval.parent(last_calls[[1]])))
}
4
sqrt # 2
4
print(sqrt) # the actual definition
3-使用软件包有疑问
我们可以构建一个将使用.Last.value
的可疑运算符:
# remotes::install_github("moodymudskipper/doubt")
library(doubt)
`?+` <- function(fun){ fun(.Last.value)}
4
?+sqrt # 2