R オブジェクトの作成:
テキストファイルからのデータの読み込み

UBC/informatics/r/data_input_text

このページの最終更新日: 2025/12/18

  1. テキストファイルを読み込む

    関連ページ


    広告

    テキストファイルを読み込む

    テキストファイル とは、文字コードによって表されるデータのみを含むファイルのことである。書式、スタイル、画像などの余計な情報を含まないので、R を始め文字列情報を扱う環境では重宝される。

    このページでは、テキストファイルを読み込むか、テキストファイルからのコピペでデータを R オブジェクトとして保存する方法についてまとめる。

    クリップボードの形式が Mac と Win で違ったりするので、コピペで読み込むのはあまりお勧めしない。ファイルを読み込む方がエラーが少ない。


    scan を使う方法

    最初の例として、以下のような改行で区切られたテキストファイルがどのように読み込まれるが調べてみる。

    1
    2
    3
    4

    このテキストファイルの名前が text.txt だとして、A というオブジェクトに読み込む場合、以下のようにする。Read 4 items という表示が出て、読み込まれたデータの数を教えてくれる。

    A <- scan("test.txt")

    なお、R の作業ディレクトリに text.txt がある場合は上記のコマンドで OK だが、そうでない場合は setwd() で作業ディレクトリを指定するか、ファイルのパスを指定する。list.files() で、カレントディレクトリにある R オブジェクトでないファイルを見ることができる。

    また、この矢印 <- は等号 = でも OK であるが、関数のオプションを指定する際に = が使われることがあり、それと区別できるように <- を使うのが一般的な気がする。

    A を表示すると [1] 1 2 3 4 のようになる。typeof(A) は doulbe を与える。よってオブジェクト型はベクターで、自明なので vector と表示されないことになる。is.vector(A) は TRUE、mode(A) は numeric となる (参考: R のデータフォーマット)。

    次に、データが文字列の場合。

    A
    B
    C
    D

    同じコマンドを実行すると、

    Error in scan("test.txt") : scan() expected 'a real', got 'A'

    というエラーになる。scan は実数 real を想定しているので、文字列のデータはそのままでは読み込めず、次のようにオプションを加える必要がある。

    B <- scan("test.txt", what=character())

    typeof(B) は character、is.vector(B) は TRUE となり、一次元の文字列ベクターとしてテキストファイルが読み込まれたことになる。


    read.table を使う方法

    上記の数字およびテキストのデータは、以下のように read.table を使っても読み込むことができる。

    C <- read.table("test.txt")

    read.table と scan との違いは以下の通り。

    • incomplete final line found by readTableHeader on 'test.txt' というエラーが出た。これは最後の行に改行がない場合にみられるエラーである。デフォルトの read.table では、データは改行で区切られていると考える。ただし、エラーは出るものの、最後の行もちゃんと読み込んでくれる。
    • typeof(C) は list、is.data.frame(C) は TRUE を与える。値の 1, 2, 3, 4 は 1 行目 V1 に格納される。

    read.table で文字列データを読み込むと、ちょっとややこしい結果になる。

    最終行に改行が必要なのは数値データと同じ。オブジェクト型は list である。mode(B$V1) のようにして読み込まれたデータのモードを調べると、numeric と出てくる。どうもアルファベットまで数字として認識されているようである。read.table でデータ型を指定するには以下のようにする。

    C <- read.table("test.txt", colClasses = c("character"))


    広告

    「あとがき」で当サイトを参考にしたと書いてくれているラノベです。Kindle Unlimited で読めました。ストーリーと文章が良く、面白かったです。


    広告

    References

    1. R でのテキストファイル読み出しと書き込み. Link: Last access 2020/01/25.
    2. R:read.csv / read.tableで型と列名を指定して読み込む。Link: Last access 2020/01/25.
    3. 井関龍太のページ. Rでクリップボードからデータを読み込む. Link: Last access 2018/12/09.

    コメント欄

    サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。