2012-12-17 11 views
10

Będzie to miało więcej sensu na przykładzie. Typowe instrukcje R z CRAN pokazują kod R z linią rozpoczynającą się od> i wcięciami oznaczonymi +. Zobacz przykład http://cran.r-project.org/web/packages/doMC/vignettes/gettingstartedMC.pdf .Czy istnieje sposób wklejenia udokumentowanego kodu R do konsoli R lub Rstudio bez rejestracji strzałki lub znaków plus?

Problem polega na tym, że nie można wyciąć i wkleić go do konsoli bez skopiowania go do edytora i usunięcia tej strzałki i znaków plus. Czy istnieje łatwiejszy sposób na wykonanie tego tekstu jako kod R? Pomyślałem, że ktoś musi poradzić sobie z tym problemem. W przeciwnym razie, przypuszczam, że napiszę scenariusz.

+3

W RGui dostępna jest opcja "Wklej tylko polecenia". –

+3

To byłby Windows RGUI. –

+0

Welll Nie wiem, jak to zrobić w R-Studio, ale "tylko wklej polecenia" działa w R. Przynajmniej robi to w Windows. Byłoby to przydatne, gdyby R Studio miało sposób na zrobienie tego. Wyobrażam sobie, że tak jest i po prostu jeszcze tego nie znalazłem. –

Odpowiedz

17

Pisanie zostało już wykonane.

2009 post by 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) 

Subsequent 2009 R-help post by 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) } 

Uwaga: upvotes skłoniło mnie aby umieścić to jako "żądanie fabularnego" na forum dyskusyjnym RStudio. Chociaż nie udało mi się go jeszcze złamać, może wymagać więcej testów, jeśli miałby zostać wbudowany w środowisko RStudio.

Powiązane problemy