2017-05-26 5 views
1

私は興味がありました。良いラッパー関数か、Rがprint()への呼び出しの出力をコメントアウトするようなものがありますか?Pre-commenting Rの出力

多くの場合、私の投稿に出力例を含めたいが、手作業で必要な書式を追加するのは面倒です。私はちょうどそれのための機能を一緒にダクトテープ

...

so <- function(x) { 
    out <- paste0('\n'," # ",capture.output(x)) 
    cat(out) 
} 

...よう
so(1:4) 

# [1] 1 2 3 4 

so(data.frame(x=rnorm(6),y=rnorm(6))) 

#    x   y 
# 1 -1.41322737 0.9892096 
# 2 0.06482021 -0.4459670 
# 3 0.86084224 -1.1174499 
# 4 0.64835059 -0.4408597 
# 5 -1.81053085 0.6771153 
# 6 -0.96065397 -0.5877505 

so(summary(lm(y~x, data=data.frame(x=rnorm(6),y=rnorm(6))))) 

# 
# Call: 
# lm(formula = y ~ x, data = data.frame(x = rnorm(6), y = rnorm(6))) 
# 
# Residuals: 
#  1  2  3  4  5  6 
# -1.36705 0.08917 -0.20441 1.15421 0.15772 0.17036 
# 
# Coefficients: 
#    Estimate Std. Error t value Pr(>|t|) 
# (Intercept) -0.2762  0.3957 -0.698 0.524 
# x    0.5925  0.6310 0.939 0.401 
# 
# Residual standard error: 0.9089 on 4 degrees of freedom 
# Multiple R-squared: 0.1806, Adjusted R-squared: -0.0242 
# F-statistic: 0.8818 on 1 and 4 DF, p-value: 0.4009 
# 

...しかし、私の頭の中でオフに行くアラームが言っていました である必要があります。

はありますか?

+0

私には良い解決策のようです。どの部分を「より良い」ものにしたいのか分かりませんか?あなたがやったことはかなりシンプルなようです。 – MrFlick

+0

シンプル、はい...しかし、基盤Rに既に存在していたものがあれば好奇心が強いです。 –

+0

これがうまくいかないような "怪しい"ケースを1つ挙げることはできますか? – MrFlick

答えて

0

私は重い人にありがとう - 誰かが同じ質問を道路の下に持っている場合のために私はこれを回答として掲示します。

私が特に気に入ったのは、overflowパッケージのsoanswer()と、reprexパッケージのreprex()です。

「オーバーフロー」パッケージ

soanswer()は非常に簡単で、かつprint()コールまで聞かせて何でもとともに、コンソールに事前にコメントテキストを出力します。したがって、

df <- data.frame(x=rnorm(6),y=rnorm(6)) 
soanswer(df) 

プリントコンソールに直接

df 
##   x   y 
## 1 0.1817694 2.0660698 
## 2 -0.5104673 2.5531193 
## 3 0.1161377 -0.1783387 
## 4 -2.3018991 -0.8449460 
## 5 2.0201924 -0.5774678 
## 6 -1.2148632 1.7873003 

。これは、便利なように見えるsoread()sodput()のようないくつかの友人が付属しています。私はそうdevtools::install_github("mrdwab/overflow-mrdwab")

「reprex」パッケージ全体の再現性の例のラッパーとして

reprex()行為を経由してのGithubからインストールし、CRANにoverflowを見つけることができなかった、とあなたが上がらないオブジェクトを参照する場合は文句を言いますその中にはいない。使い方は

reprex({ 
    df <- data.frame(x=rnorm(6),y=rnorm(6)) 
    df + 1 
}, venue="so") 

のように見え、これはクリップボードに

df <- data.frame(x = rnorm(6), y = rnorm(6)) 
df + 1 
#>   x   y 
#> 1 0.9632665 0.8067071 
#> 2 1.2540641 0.6184877 
#> 3 0.2663705 0.9305724 
#> 4 2.2675316 1.1118192 
#> 5 1.7843500 2.6724034 
#> 6 0.5396790 1.9320059 

をレンダリングします。私はこれを非常に涼しく感じましたが、それでも手でそれをインデントしなければなりませんでした。要約で

、私はoverflowパッケージは私がやりたいことにより仕立てました(これは私が最も可能性が高い将来的に使用しますものです)ことがわかったが、およそreprexを見つけることが嬉しかったです。

+0

私はあなたの関数が好きです。 'overflow'パッケージが同じことをするのであれば、確かではありません。 – Masoud