10

これは、例を使用するとより意味があります。CRANの一般的なRマニュアルには、>で始まる行と+で示されるインデントを持つRコードが示されています。例については、 http://cran.r-project.org/web/packages/doMC/vignettes/gettingstartedMC.pdfを参照 してください 。

問題は、エディターにコピーして矢印とプラス文字を削除しないと、それを切り取ってコンソールに貼り付けることができないことです。そのテキストをRコードとして実行する簡単な方法はありますか?私は誰かがこの問題に対処したに違いないと思った。そうでなければ、私はスクリプトを書くと思います。

4

2 に答える 2

17

書き込みはすでに完了しています。

Duncan Murdochによる2009年の投稿:

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) 

その後の2009年のR-GaborGrothendieckによるヘルプ投稿:

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フレームワークに組み込まれる場合は、さらにテストが必要になる可能性があります。

于 2012-12-17T07:08:45.897 に答える
0

これで、関数の1つがこれを正確に実行する(https://github.com/dracodoc/mischelperRStudio Addin )という便利な機能があります。として使用する利点は、キーボードショートカットに変えることができることです。通常は貼り付けなので、コンソールからコピーしたいスクリプト/コードを。として持っています。次のようなコードを貼り付けます。mischelperAddinCtrl + VCtrl + 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
于 2019-10-21T20:40:57.107 に答える