举个例子,这将更有意义。CRAN 的典型 R 手册显示 R 代码,其中一行以 > 开头,缩进用 + 表示。 有关示例,请参见 http://cran.r-project.org/web/packages/doMC/vignettes/gettingstartedMC.pdf 。
问题在于,如果不将其复制到编辑器中并删除那些箭头和加号字符,您就无法将其剪切并粘贴到控制台中。有没有更简单的方法将该文本作为 R 代码执行?我想一定有人处理过这个问题。否则,我想我会写一个脚本。
举个例子,这将更有意义。CRAN 的典型 R 手册显示 R 代码,其中一行以 > 开头,缩进用 + 表示。 有关示例,请参见 http://cran.r-project.org/web/packages/doMC/vignettes/gettingstartedMC.pdf 。
问题在于,如果不将其复制到编辑器中并删除那些箭头和加号字符,您就无法将其剪切并粘贴到控制台中。有没有更简单的方法将该文本作为 R 代码执行?我想一定有人处理过这个问题。否则,我想我会写一个脚本。
已经写好了。
CleanTranscript <- function(lines) {
lines <- grep("^[[:blank:]]*[^>+[:blank:]]*[>+]", lines, value = TRUE)
lines <- sub("^[[:blank:]]*[^>+[:blank:]]*[>+] ?", "", lines) }
source(textConnection(CleanTranscript(
# This is the Windows input strategy
readLines("clipboard")
# See below for Mac version
)),
echo = TRUE, max.deparse.length=Inf)
Gabor Grothendieck 在 2009 年的后续 R-help 帖子:
process.source <- function(action = c("both", "run", "show"), echo = TRUE,
max.deparse.length = Inf, ...) {
# This is the Mac input strategy
L <- readLines(pipe("pbpaste"))
# for Windows devices use
# L <- readLines("clipboard")
rx <- "^[[:blank:]]*[^>+[:blank:]]*[>+]"
is.cmd <- grepl(rx, L)
L[is.cmd] <- gsub(paste(rx, "?"), "", L[is.cmd])
L[!is.cmd] <- paste("#", L[!is.cmd])
action <- match.arg(action)
if (action != "run") for(el in L) cat(el, "\n")
if (action == "both") cat("##################################\n")
if (action != "show")
source(textConnection(L), echo = echo,
max.deparse.length = max.deparse.length, ...)
invisible(L) }
注意:赞成票促使我将此作为“功能请求”发布在 RStudio 讨论板上。虽然我还没有破解它,但如果它要内置到 RStudio 框架中,它可能需要更多的测试。
现在有一个不错的RStudio
Addin
名称mischelper
(https://github.com/dracodoc/mischelper),它的一个功能就是这样做的。拥有它的好处Addin
是您可以将其变成键盘快捷键。通常粘贴是Ctrl + V
这样我有我想从控制台复制的脚本/代码作为Ctrl + B
. 它粘贴代码,例如:
> x <- 3
> switch(x, 2+2, mean(1:10), rnorm(5))
[1] 2.2903605 2.3271663 -0.7060073 1.3622045 -0.2892720
> centre <- function(x, type) {
+ switch(type,
+ mean = mean(x),
+ median = median(x),
+ trimmed = mean(x, trim = .1))
+ }
> x <- rcauchy(10)
> centre(x, "mean")
[1] 0.8760325
进入:
x <- 3
switch(x, 2+2, mean(1:10), rnorm(5))
# [1] 2.2903605 2.3271663 -0.7060073 1.3622045 -0.2892720
centre <- function(x, type) {
switch(type,
mean = mean(x),
median = median(x),
trimmed = mean(x, trim = .1))
}
x <- rcauchy(10)
centre(x, "mean")
# [1] 0.8760325