0

dput()大規模なデータベースで再現可能な例を作成するために使用しようとしています。再現可能な例には移動平均が含まれるため、データベースは大規模である必要があります。これを行うために私が見つけた方法にはreproduce、ここで共有されている関数が含まれますHow to make a great R reprobible example? @リカルド・サポルタ。reproduceに基づいていますdput()(コードはこちらhttps://github.com/rsaporta/pubR/blob/gitbranch/reproduce.R)。

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

data <- read.table("http://pastebin.com/raw/xP1Zd0sC")
setDF(data)
reproduce(data, rows = c(1:100))

そのコードはデータフレームを作成し、その出力をdata提供します。引数をdput()使用して、完全なデータフレームを出力します。rowsしかし、そのような出力を使用してデータフレームを再作成すると、失敗します。

dput()出力を新しいデータフレームに割り当てようとすると、コードが不完全になり、最後に手動で 3 つの括弧を追加する必要があります。その後、次のエラー メッセージが表示されます。

引数なしでのdput()出力は正常に機能することに注意してください。完全なデータフレームを出力するのではなく、サンプルを出力します。reproducerows = c(1:100)

#This works fine
reproduce(data)

この再現可能な例を作成するために、pastebin メソッドを使用したことにも注意してください。そのメソッドは、一部の列の単語間にスペースがあるデータをインポートしようとするたびに失敗するため、私の目的のためにメソッドを置き換えるものではありませんdput()(日時スタンプのあるデータフレームなど)。

EDIT:さらにトラブルシューティングを行った後、引数が4つ以上の列を含むデータフレームと一緒に使用されているreproduce場合、上記のように失敗することが発見されました。代替手段を見つける必要があります。rows

誰かがこれをテストすることに興味がある場合は、次のリンクを使用して上記のコードを実行してください。すべて異なる数の列が含まれています。

1) 100x5: http://pastebin.com/raw/xP1Zd0sC

2) 100x4: http://pastebin.com/raw/YZtetfne

3) 100x4: http://pastebin.com/raw/63Ap2bh5

4) 100x3: http://pastebin.com/raw/1vMMcMtx

5) 100x3: http://pastebin.com/raw/ziM1bYQt

6) 100x1: http://pastebin.com/raw/qxtQs5u4

4

1 に答える 1

2

データセットの最初の 100 行だけを試している場合はdput()、実行する直前にデータをサブセット化できますdput()。連携機能を使う必要はないようです。

dput(droplevels(head(data, 100)))  ## or dput(droplevels(data[1:100,]))

するべきです。

しかし、あなたの試着がreproduce()うまくいかなかったのは奇妙です。そのために、githubページに問題を提出します。そこでは、より建設的な答えが得られるでしょう。

について思い出させてくれた@David Arenburgに感謝しますdroplevels()。因子列がある場合、この操作で役立ちます。「残り物」レベルはドロップされます。

于 2016-05-01T19:26:49.277 に答える