1. Julia の小ネタ--043 データフレームを clipboard にコピーする
clipboard(df) とすれば,df が clipboard にコピーされるのではあるが,期待するようなタブ区切りのデータではない。
以下のような単純なデータフレーム df を clipboard(df) してみると,
using CSV, DataFrames
df = DataFrame(:a => 1:5, :b => rand(5), :c => ["a", "b", "c", "d", "e"])
5 rows × 3 columns
a | b | c | |
---|---|---|---|
Int64 | Float64 | String | |
1 | 1 | 0.358309 | a |
2 | 2 | 0.348789 | b |
3 | 3 | 0.249906 | c |
4 | 4 | 0.402276 | d |
5 | 5 | 0.947734 | e |
clipboard(df)
clipboard を然るべきアプリの然るべき箇所にペースト(command + v) すると,以下のようなものがペーストされるであろう。
5×3 typename(DataFrame)
│ Row │ a │ b │ c │
│ │ Int64 │ Float64 │ String │
├─────┼───────┼──────────┼────────┤
│ 1 │ 1 │ 0.865478 │ a │
│ 2 │ 2 │ 0.503881 │ b │
│ 3 │ 3 │ 0.289082 │ c │
│ 4 │ 4 │ 0.256818 │ d │
│ 5 │ 5 │ 0.849747 │ e │
tab 区切りのデータ(tab separated values TSV)としてコピーするには,
clipboard(sprint(show, "text/tab-separated-values", df))
とする。
clipboard(sprint(show, "text/tab-separated-values", df))
これにより,以下のような TSV データが clipboard にコピーされる。
"a" "b" "c"
1 0.8654777830565838 "a"
2 0.5038807198792826 "b"
3 0.28908228451250684 "c"
4 0.2568176696256196 "d"
5 0.8497466570672143 "e"
あとは,然るべきアプリの然るべき箇所にペースト(command + v) するだけである。
2. おまけ Matrix を TSV 形式で clipboard にコピーする
sprint の第3引数を Matrix オブジェクトにすればよいだけである。
ここでは,df を Matrix にして与えてみる。当然であるがデータフレームの列名を除いた部分だけが clipboard にコピーされる。
clipboard(sprint(show, "text/tab-separated-values", Matrix(df)))
1 0.8654777830565838 a
2 0.5038807198792826 b
3 0.28908228451250684 c
4 0.2568176696256196 d
5 0.8497466570672143 e