Подтвердить что ты не робот

Есть ли способ вставить документированный R-код в R-консоль или Rstudio без регистрации стрелок или плюс?

Это будет иметь больше смысла с примером. Типичные руководства R от CRAN показывают R-код с линией, начинающейся s > и отступов, обозначенных символом+. Видеть http://cran.r-project.org/web/packages/doMC/vignettes/gettingstartedMC.pdf для примера.

Проблема в том, что вы не можете вырезать и вставлять это в консоль, не копируя ее в редактор и не удаляя эти символы со стрелками и плюс. Есть ли более простой способ выполнить этот текст как R-код? Я подумал, что кто-то должен был решить эту проблему. В противном случае, я думаю, я напишу script.

4b9b3361

Ответ 1

Письмо уже сделано.

2009 сообщение от Duncan Murdoch:

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) 

Последующая статья R-help 2009 года от Gabor Grothendieck:

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.

Ответ 2

Теперь есть хороший 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