トップ > サポート > ご利用での Q&A > データ入出力編

データ入出力編

は Windows 版固有、 は UNIX 版固有、 は Linux 版固有、 は S-PLUS 2000 版固有の問題です。

質問 一覧

テキストファイルからデータを読み込むためにはどうすれば良いか。

テキストファイルからデータを読み込むための、最もシンプルで汎用的な方法は関数scanを用いる方法です。関数scanはデータファイルの最初から順番にデータを読み込み、Sオブジェクトとして格納させることができます。

詳細な解説はマニュアルのscanの項を参照してください。また、関数read.tableなどもデータの取り込みに利用できます。

Example :
> mydata <- scan("data.txt")
# テキストファイル"data.txt"から数値データを読み込み、mydataという名前のSオブジェクトを作成する
> mydata2 <- scan("data2.txt",what="")
# テキストファイル"data2.txt"から文字データを読み込み、mydata2という名前のSオブジェクトを作成する
> mydata3 <- scan("data3.csv",sep=",")
# CSVタイプのファイル"data3.csv"から数値データを読み込む

Excel の Book 形式ファイルから2枚目以降のシートを読み込みたい。

Excel ファイルをインポートした。インポート自体はうまくいったようだが、そのデータを使った処理がまったくできない。

Excel ファイルにアンダーバー( _ )を含む名前(例えば Jan_98.xls のような)がついていませんか。

S-PLUS ではアンダーバー( _ )は「付値」(名前をつけて値を保存すること)を行う特殊な演算子を表します。そのため、このようなファイルをそのままインポートすると、エラーの原因となりますので、

ようにしてください。

read.table でデータを読み込んだが、1列目のデータが読み込まれていない。

関数 read.table を使うと、スプレッドシートデータやデータベースのデータを読み込むのにとても便利です。read.table でテキストデータを読み込むと、データ・フレームとして読み込まれますから、その後の統計処理などに有利です。

read.table を使って読み込んだデータの1列目のデータが欠落しているように見えることがあります。これは、元のデータの1列目が文字列だった場合(a1, b2 など)、この文字列をデータの行名(row name)とするためです。

この動作を避けるには、read.table の引数 row.names に NULL を与えて読み込みます。

> mydata <- read.table("data.txt", sep=",", row.names=NULL)

すでに行名として読み込まれているデータは以下のようにしてデータに戻すことができます。

> mydata$var <- dimnames(mydata)[[1]] 
# 行名を mydata の変数 var にする