r faq – 素晴らしい R の再現可能な例を作成する方法

プログラミングQA


この投稿に触発されて、私は今、便利な機能を使用しています。
reproduce(<mydata>) Stack Overflow に投稿する必要があるとき。


もしも myData は再現するオブジェクトの名前です。R で次のコマンドを実行します。

install.packages("devtools")
library(devtools)
source_url("https://raw.github.com/rsaporta/pubR/gitbranch/reproduce.R")

reproduce(myData)

詳細:

この関数は、 dput そして、次のことを行います。

  • 大規模なデータ セットを自動的にサンプリングします (サイズとクラスに基づきます。サンプル サイズは調整可能です)。
  • を作成します dput 出力
  • 指定できます どれの エクスポートする列
  • その前に追加します objName <- ...、簡単にコピーして貼り付けられるようにしますが…
  • Mac で作業している場合、出力は自動的にクリップボードにコピーされるため、単純に実行して質問に貼り付けることができます。

ソースはここから入手できます:


例:

# sample data
DF <- data.frame(id=rep(LETTERS, each=4)[1:100], replicate(100, sample(1001, 100)), Class=sample(c("Yes", "No"), 100, TRUE))

DF は約 100 x 102 です。10 行といくつかの特定の列をサンプリングしたい

reproduce(DF, cols=c("id", "X1", "X73", "Class"))  # I could also specify the column number.

次の出力が得られます。

This is what the sample looks like:

    id  X1 X73 Class
1    A 266 960   Yes
2    A 373 315    No            Notice the selection split
3    A 573 208    No           (which can be turned off)
4    A 907 850   Yes
5    B 202  46   Yes
6    B 895 969   Yes   <~~~ 70 % of selection is from the top rows
7    B 940 928    No
98   Y 371 171   Yes
99   Y 733 364   Yes   <~~~ 30 % of selection is from the bottom rows.
100  Y 546 641    No


    ==X==============================================================X==
         Copy+Paste this part. (If on a Mac, it is already copied!)
    ==X==============================================================X==

 DF <- structure(list(id = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 25L, 25L, 25L), .Label = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y"), class = "factor"), X1 = c(266L, 373L, 573L, 907L, 202L, 895L, 940L, 371L, 733L, 546L), X73 = c(960L, 315L, 208L, 850L, 46L, 969L, 928L, 171L, 364L, 641L), Class = structure(c(2L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L), .Label = c("No", "Yes"), class = "factor")), .Names = c("id", "X1", "X73", "Class"), class = "data.frame", row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 98L, 99L, 100L))

    ==X==============================================================X==

また、出力全体が、長々と切り刻まれた行のパラグラフではなく、1 つの長い行にまとめられていることにも注意してください。 これにより、スタック オーバーフローの質問の投稿が読みやすくなり、コピーと貼り付けも簡単になります。


2013 年 10 月の更新:

テキスト出力の行数 (つまり、スタック オーバーフローに何を貼り付けるか) を指定できるようになりました。 使用 lines.out=n これに対する議論。 例:

reproduce(DF, cols=c(1:3, 17, 23), lines.out=7) 収量:

    ==X==============================================================X==
         Copy+Paste this part. (If on a Mac, it is already copied!)
    ==X==============================================================X==

 DF <- structure(list(id = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 25L,25L, 25L), .Label
      = c("A", "B", "C", "D", "E", "F", "G", "H","I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U","V", "W", "X", "Y"), class = "factor"),
      X1 = c(809L, 81L, 862L,747L, 224L, 721L, 310L, 53L, 853L, 642L),
      X2 = c(926L, 409L,825L, 702L, 803L, 63L, 319L, 941L, 598L, 830L),
      X16 = c(447L,164L, 8L, 775L, 471L, 196L, 30L, 420L, 47L, 327L),
      X22 = c(335L,164L, 503L, 407L, 662L, 139L, 111L, 721L, 340L, 178L)), .Names = c("id","X1",
      "X2", "X16", "X22"), class = "data.frame", row.names = c(1L,2L, 3L, 4L, 5L, 6L, 7L, 98L, 99L, 100L))

    ==X==============================================================X==



Source link

コメント

タイトルとURLをコピーしました