Hatena::ブログ(Diary)

盆栽日記

2017-05-15

クリップボードとdputでデータを共有する

Rのデータ整形について質問したいんだけどデータはExcel上にある、そして質問は今この瞬間に投げかけたい、ファイルに出力している暇などない、そんな事態、あると思います。

そんな時はdput関数を使ってください。

クリップボードにコピーした結果を共有する

たとえばこんなデータがExcel上にあったとします。

f:id:dichika:20170515111821p:image

該当範囲のデータをまずコピーします。

その上で以下のコマンドを打ち込んでください。

dput(read.table("clipboard")) # Windowsの場合
dput(read.table(pipe("pbpaste"))) # Macの場合

こうするとコンソールに以下のような結果が表示されます。

> dput(read.table(pipe("pbpaste")))
structure(list(V1 = structure(c(3L, 1L, 2L), .Label = c("1", 
"2", "num"), class = "factor"), V2 = structure(c(3L, 1L, 2L), .Label = c("3", 
"4", "value"), class = "factor")), .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA, 
-3L))

この出力結果(structure以下)を相手に共有してください(スタックオーバーフローとかRワカラングとか)。

どのように共有しているかは例えば以下のスタックオーバーフローの質問等を参考にしてください。

http://stackoverflow.com/questions/28391850/r-reverse-order-of-discrete-y-axis-in-ggplot2

出力結果を利用する

この出力結果を利用する時はstructure以下を実行してください。

上記の例であれば以下のような形になります。

df <- structure(list(V1 = structure(c(3L, 1L, 2L), .Label = c("1", 
                                                              "2", "num"), class = "factor"), V2 = structure(c(3L, 1L, 2L), .Label = c("3", 
                                                                                                                                       "4", "value"), class = "factor")), .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                                      -3L))

ほぼ近い形で再現できます。

> df
   V1    V2
1 num value
2   1     3
3   2     4

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/dichika/20170515/p1
Connection: close