2012-12-17 24 views
10

Điều này sẽ có ý nghĩa hơn với một ví dụ. Sách hướng dẫn R điển hình từ CRAN hiển thị mã R với một dòng bắt đầu bằng> và thụt đầu dòng được chỉ ra bằng dấu +. Xem http://cran.r-project.org/web/packages/doMC/vignettes/gettingstartedMC.pdf để biết ví dụ.Có cách nào để dán mã R được ghi vào bảng điều khiển R hoặc Rstudio không có mũi tên hoặc dấu cộng đang được đăng ký không?

Sự cố là bạn không thể cắt và dán nội dung đó vào bảng điều khiển mà không cần sao chép nó vào trình chỉnh sửa và xóa các mũi tên đó cùng với các ký tự. Có cách nào dễ dàng hơn để thực thi văn bản đó dưới dạng mã R không? Tôi nghĩ rằng ai đó phải giải quyết vấn đề này. Nếu không, tôi đoán tôi sẽ viết một kịch bản.

+3

Trong RGui, có tùy chọn 'Chỉ dán lệnh'. –

+3

Đó sẽ là Windows RGUI. –

+0

Welll Tôi không biết làm thế nào để làm điều đó trong R-Studio, nhưng 'dán lệnh chỉ' hoạt động trong R. Ít nhất nó làm trong Windows. Sẽ thuận tiện nếu R Studio có cách để làm điều đó. Tôi tưởng tượng nó và tôi chưa tìm thấy nó. –

Trả lời

17

Văn bản đã được thực hiện.

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) } 

Lưu ý: Các upvotes nhắc tôi đăng bài này như một "tính năng yêu cầu" trên diễn đàn thảo luận RStudio. Mặc dù tôi chưa phá vỡ nó, nó có thể cần nhiều thử nghiệm hơn nếu nó được xây dựng trong khung công tác RStudio.

Các vấn đề liên quan