「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

プログラムとしてのRを学ぶ(その10/16)

 \mathrm{R}をプログラムとして見たときに注意・検討すべきところを学んでおきたい、ということで

を読んでいく。

10. 入出力

 \mathrm{R}は非常に多目的な多くの\mathrm{I/O}機能を特徴としている。

10.1 キーボードとモニタへのアクセス

 \mathrm{R}がキーボードとモニタにアクセスする関数として、たとえば\mathrm{scan()},\mathrm{readline()},\mathrm{print()},\mathrm{cat()}関数を扱う。

10.1.1 scan()関数の使用

 \mathrm{scan()}を用いるとファイルやキーボードからベクトル(数値や文字)を読み込ませることができる。

scan("---.txt") # 数値を読み込むならば他の引数は無くてもよい
scan("---.txt", what = "") # whatにモードを指定する。""は文字列
x <- scan("---.txt", what = "", seq = "\n") # seqに区切りの単位を与える\nは各行を文字列として読み込む
scan("") # 第一引数を""とすると、キーボードから直接打ち込む
10.1.2 readline()の使用

 キーボードから1行を読み込みたいときには\mathrm{readline()}が便利である。

w <- readline()
inits <- readline(""type your initials: )
10.1.3 画面への出力

 画面への出力には\mathrm{print()}\mathrm{cat()}があり、出力の番号がつかない後者の方が見やすい。

print("abc")
cat("abc")

x <- 1:3
cat(x, "abc","de\n") # 何も指定しないと、引数同士を空白を挟んで出力する
cat(x, "abc","de\n", sep = "") # 空白が不要であればsep = ""とする
cat(x, "abc","de\n", sep = "\n") # 他の結合方法も指定できる

10.2 ファイルの読み書き

10.2.1 ファイルからのデータフレームや行列の読み込み

 ファイル\mathrm{z}

\mathrm{name}
\mathrm{age}
\mathrm{John} 25
\mathrm{Mary} 28
\mathrm{Jim} 19

を考える。これを読み込むのに以下のような方法がある。

z <- read.table("z", header = T)
z

 またファイル\mathrm{x}

1 0 1
1 1 1
1 1 0
1 1 0
0 0 1

を考える。これを読み込むのに\mathrm{scan}()を用いた以下の方法がある。他方で一般には\mathrm{read.table}()を用いる方法がある。

x <- matrix(scan("x"), nrow = 5, byrow = T)

read.matrix <- function(filename){
   as.matrix(read.table(filename))
}
10.2.2 テキストファイルの読み込み

 テキストファイルに対して、\mathrm{readLines}()で読み込むことができる。1行ずつ読み込むこともできれば、一度に全部読み込むことができる。
 ファイル\mathrm{z1}

\mathrm{John} 25
\mathrm{ary} 28
\mathrm{Jim} 19

に対して一度に全部読み込むには以下のようになる。

z1 <- readLine("z1")
z1
10.2.3 コネクションの概要

 コネクションは様々な種類の\mathrm{I/O}操作で使う基本的な仕組みを示す\mathrm{R}用語である。コネクションは\mathrm{file}(),\mathrm{url}()またはその他のいくつかの\mathrm{R}関数を呼び出して作成する。このような関数の一覧を見るには以下のコマンドを入力する。

?connection

c <- file("z1",#r#)

readLines(c,n=1)
readLines(c,n=1)
readLines(c,n=1)
readLines(c,n=1)
10.2.4 URLを用いたリモートマシン上のファイルへのアクセス

 \mathrm{read.table}()および\mathrm{scan}()といった\mathrm{I/O}関数は、引数として\mathrm{Web\ URL}を取る。

10.2.5 ファイルへの書き込み

 ファイルの書き込みにはたとえば\mathrm{write.table}()がある。

# write.table()によるファイルへの書き込み
kids <- c("Jack","Jill")
ages <- c(12,10)
d <- data.frame(kids,ages, stringsAsFactors = F)
d
write.table(d, "kds")

# cat()による一部分の書き出し
cat("abc\n",file = "u")
cat("de\n",file = "u", append = T)

# writeLines()による出力
c <- file("www","w")
writeLines(c("abc","de","f"),c)
close(c)
10.2.6 ファイルとディレクトリの情報の取得

 ディレクトリやファイルに関する情報の取得、ファイルアクセス許可の設定を行うための関数が\mathrm{R}には用意されている。たとえば

  • \mathrm{file.info}():引数の文字ベクトルに含まれる名前のファイルに対して、ファイルサイズや作成時間、ディレクトリか通常のファイルか否かなどの状態を返す。
  • \mathrm{dir}():最初の引数で指定されたディレクトリ内のすべてのファイル名を列挙する文字ベクトルを返す。
  • \mathrm{file.exists}():最初の文字ベクトル引数で指定された名前のファイルが存在するか否かを返す。
  • \mathrm{getwd}(),\mathrm{setwd}():現在の作業ディレクトリの取得・変更を行う。

10.3 インターネットへのアクセス

 \mathrm{R}のソケット機能を用いると、インターネットの\mathrm{TCP/IP}プロトコルにアクセスできる。

プライバシーポリシー お問い合わせ