S-PLUSのデータ入出力

このページの関数は S言語のソフト/システム構成などの環境に強く依存します。 ファイル名にはルートディレクトリからの名前を指定して下さい。 ディレクトリの指定がない場合、ホームディレクトリを指定したことになります。

ファイルからのデータ入力

read.table("ファイル名") 各レコードが同一タイプのファイルからデータ読み込み、データフレームとする。
例) x <- read.table("/home/who/tmp",header=T,sep=",")
ASCII file "/home/who/tmp"(コンマ区切り、第1行目は変数名(英数字のみ)、 各行がサンプル、各列は変量) からデータを読み込み データフレーム x とする。
scan("ファイル名") ファイルからのデータ読み込みベクトルとする
例) x <- t(matrix(scan("/home/who/tmp",sep=","),ncol=3))
ASCII file "/home/who/tmp" (コンマ区切り、一行に3つのデータ)からデータを読み込み 列数3の行列 x とする。
注1:データの1レコード中に各種の型があるときには、what=list(1,"")などと 1レコード分の見本を与えると、各フィールドごとのリストとなる。 あるいは、全部、文字型で読み込み、 後で必要に応じ型変換しても良い。
注2:データの1レコードのフィールド数が不定の場合には、 とにかく文字型など最も一般的な型で読み込んでおいて(結果をdataとする)、 下のcount.fieldsで フィールド数を数えて nf <- count.fields("ファイル名",sep)split(data,rep(1:length(nf),nf) で、各レコードごとのリストとできる。 なお、各レコードの先頭位置はc(1, 1+cumsum(nf[-length(nf)]) である。 なお、多くのオプションがある。詳しくは online manual 参照
count.fields("ファイル名",sep) ファイルの各レコードが何フィールドからなっているかを調べ、レコード数長のベクトルを返す。 フィールドの区切はsepで指定する。
Ver5 以降では、以下の関数が使える。

openData, closeData, getDataInfo, importData, exportData, readNextDataRows, writeNextDataRows

利用例
# First create an external data set:
exportData(Quinidine, "Quinidine.ssd01")  # a SAS data file
# Open the external data set for subsequent reads:
dh <- openData("Quinidine.ssd01", rowsToRead=100, drop="Subject")
# Get variable names and type
getDataInfo(dh)
# Read the first 100 observations:
df100 <- readNextDataRows(dh)
# Close the external data file:
closeData(dh)

データの編集

オブジェクト <- vit(オブジェクト) オブジェクトの編集
オブジェクト <- data.ed(オブジェクト) オブジェクトのデータ編集
注 : マウスによるカット&ペーストができるウィンドウ端末で仕事をするなら、 S言語の外部の環境で、適当なエディタを立ち上げてマウスでウィンドウ間を コピーした方が便利です。

コマンドファイルの入力

source("ファイル名") ファイルに記述されたS-PLUSコマンドの実行

セッション画面への出力

cat(x) xを文字型に変換し出力する
print(x) xをそのオブジェクトに合った形式で書き出す
format(x,nsmall) 原子オブジェクトxを formatの整った文字列ベクトルに変換する。x の各要素をすべて同じ長さで、 小数点の位置も同じ文字列とする。実数の場合、末尾の0は省略される。 nsmallを与えると、実数の小数点以下の0を省かずに、nsmall桁まで0として、表示する。 関数 catと組み合わせれば,より自由に書式を変更できる。
round(x,digits=0) 実数オブジェクトxをdigits桁に四捨五入する。
signif(x,digits=0) 原子オブジェクトxを有効数字digits桁に丸める。
計算結果はコマンドラインで実行すると自然と画面に出力されるので、 コマンドラインで仕事をする限り、以上のコマンドは不要。ただし、 自作の関数から途中結果を出力したいときなどには、上の関数が必要となる。

画面出力の切り替え

sink("ファイル名") 出力先を指定ファイルに切り換える
sink() 画面出力(標準出力)に戻す

ファイルへの入出力

cat(x, "ファイル名") xを文字型に変換し、ファイルに出力する
write(x, "ファイル名") xをアスキーフォーマットでファイルに書き出す
write.table(x, "ファイル名") 行列またはデータフレームxをアスキーフォーマットでファイルに書き出す
dump(リスト, "ファイル名") リストで指定されたオブジェクトをアスキーテキストとしてファイルに出力する。
source("ファイル名") dumpによって作成したファイルを読み込む
data.dump(x, "ファイル名") xを書き出すdumpの高速版
data.restore("ファイル名") data.dumpによって作成したファイルを読む

S-PLUSオブジェクトを利用するための追加

attach("ファイル名", pos=n) 検索リストn番目に、ファイル(ディレクトリ)を追加する
detach(what=n) 検索リストn番目からファイル(ディレクトリ)を削除する
library() ライブラリの各部門の案内
library(help=部門名) 指定部門の概説
library(部門名) 指定部門を使用可能にする