裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Julia の小ネタ--043 データフレームを clipboard にコピーする

2021年11月01日 | ブログラミング

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
  
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Julia の小ネタ--042 clipboard からデータフレームを読み込む

2021年11月01日 | ブログラミング

1. Julia の小ネタ--042 clipboard からデータフレームを読み込む

 「Julia の小ネタ--038 文字列からデータフレームを読み込む」に似ているが,clipboard の内容からデータフレームを作る例を挙げておく。
 IOBuffer( ) に,クリップボードから読み込んだ文字列を与えるのである。
 CSV.read( ) の第1引数は通常はファイルパスであるが,IOBuffer( ) で引数に文字列を指定することもできる。
 欄の区切り文字は delim で指定するが,例のように空白で(桁を揃えて)区切られている場合は,ignorerepeated=true を指定しなければならない。

 以下を command + c でクリップボードにコピー後,

      x1    x2    x3    x4    y1    y2    y3    y4
      10    10    10     8  8.04  9.14  7.46  6.58
       8     8     8     8  6.95  8.14  6.77  5.76
      13    13    13     8  7.58  8.74 12.7   7.71
       9     9     9     8  8.81  8.77  7.11  8.84
      11    11    11     8  8.33  9.26  7.81  8.47
      14    14    14     8  9.96  8.1   8.84  7.04
       6     6     6     8  7.24  6.13  6.08  5.25
       4     4     4    19  4.26  3.1   5.39 12.5
      12    12    12     8 10.8   9.13  8.15  5.56
       7     7     7     8  4.82  7.26  6.42  7.91
       5     5     5     8  5.68  4.74  5.73  6.89

 以下を実行する。

  using CSV, DataFrames
  anscombe = CSV.read(IOBuffer(clipboard()), DataFrame, delim=" ", ignorerepeated=true)

11 rows × 8 columns

  x1 x2 x3 x4 y1 y2 y3 y4
  Int64 Int64 Int64 Int64 Float64 Float64 Float64 Float64
1 10 10 10 8 8.04 9.14 7.46 6.58
2 8 8 8 8 6.95 8.14 6.77 5.76
3 13 13 13 8 7.58 8.74 12.7 7.71
4 9 9 9 8 8.81 8.77 7.11 8.84
5 11 11 11 8 8.33 9.26 7.81 8.47
6 14 14 14 8 9.96 8.1 8.84 7.04
7 6 6 6 8 7.24 6.13 6.08 5.25
8 4 4 4 19 4.26 3.1 5.39 12.5
9 12 12 12 8 10.8 9.13 8.15 5.56
10 7 7 7 8 4.82 7.26 6.42 7.91
11 5 5 5 8 5.68 4.74 5.73 6.89

2. おまけ clipboard から行列(Matrix)を読み込む

 データフレームは列名があり,列の型は必ずしも一定ではない。  
 データフレームに対して,行列 Matrix は列名はなく,全ての列の型は同じである。

 以下を command + c でクリップボードにコピー後,

      10    10    10     8  8.04  9.14  7.46  6.58
       8     8     8     8  6.95  8.14  6.77  5.76
      13    13    13     8  7.58  8.74 12.7   7.71
       9     9     9     8  8.81  8.77  7.11  8.84
      11    11    11     8  8.33  9.26  7.81  8.47
      14    14    14     8  9.96  8.1   8.84  7.04
       6     6     6     8  7.24  6.13  6.08  5.25
       4     4     4    19  4.26  3.1   5.39 12.5
      12    12    12     8 10.8   9.13  8.15  5.56
       7     7     7     8  4.82  7.26  6.42  7.91
       5     5     5     8  5.68  4.74  5.73  6.89

 以下を実行する。
 見た目は,最初の4列は整数型であるが,残り4列が実数型なので,実数型の Matrix として読まれる。

  using DelimitedFiles
  anscombe2 = readdlm(IOBuffer(clipboard()))
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Julia の小ネタ--041 clipboard へ出力

2021年11月01日 | ブログラミング

clipboard へ出力

clipboard(str) とすると,str の内容がクリップボードにコピーされる。そのあと,クリップボードの内容をペースト(command + v) できる。

以下を実行後,

  str = "0123456789\nabcdefghij\n"
  clipboard(str)

別のアプリの入力場面で,command + v すれば

0123456789
abcdefghij

が,ペーストされるであろう。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Julia の小ネタ--040 クリップボード(clipboard)から入力

2021年11月01日 | ブログラミング
  s = clipboard()
  println(s)
  s
  s2 = clipboard()
  println(s2)
  s2
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村