readtable

概要

从磁盘读取列数据文件到内存

语法

ReadTABle [MORE] [DIR CURRENT|name] [FREE|FORMAT tex] [CONTENT text]
    [HEADER number] [filelist]

所有的选项必须位于 filelist 之前。最后两个选项可以放在每个文件的第一行。

输入

MORE

将新文件追加到内存中老文件之后。若忽略该选项,则新数据将替代内存中的老数据

DIR CURRENT

从当前目录读取所有简单文件名。当前目录是你启动SAC的目录

DIR name

从目录name中读取全部简单文件,其可以为绝对/相对路径

FREE

用自由格式读取文件列表中的数据(以空格分隔)

FORMAT text

以固定格式读取文件列表中的数据。该选项目前不可用

CONTENT text

定义数据内容。text 的具体格式见说明及示例

HEADER

文件中要跳过的几个头段行

filelist

列数据文件

缺省值

readtable free content y. dir current

说明

该命令可以读取文本型列数据。最简单的用法就是读取一个Y数据,也可以通过修改 content 的内容读入X-Y数据或更复杂的数据。因而该命令可以用于直接读取其他程序输出的复杂格式数据。也可以用这个方法读入多个Y数据集,但只允许一个X数据集。

读入数据时会计算基本的头段变量,包括 nptsbedeltalevendepmindepmaxdepmin。若只有一个 Y 数据集,内存中的数据文件名将和磁盘文件名相同;若有多个Y数据集,则在文件名之加上一个两位数字。

字符数字型数据文件的每一行都将以自由格式或声明的格式读入,每行最多160个字符。content 选项用于决定对于数据每行的每个输入该如果处理。 在 content text 中的每个字符分别代表了不同的数据元素,这些字符的顺序与数据中每行的输入所代表的含义相对应。content 字段允许的字符如下:

  • Y:下一个输入属于Y(因变量)数据集

  • X:下一个输入属于X(自变量)数据集

  • N:下一个输入属于数据集

  • P:下一对输入使用X-Y数据集

  • R:下一对输入使用Y-X数据集

  • I:忽略这个输入

还有一个重复计数器可以跟在上面的任何字符之后。这个重复计数器是一个1位或 2位整数,其代表重复前面那个字符多少次,“.”是一个无穷次重复的计数器,其只能出现在 contenttext 的最后,意味着最后一个字符可以表示接下来的所有输入列。

示例

为了读取一个或多个自由格式的 X-Y 数据对:

SAC> readtable content p. filea

你不能在文件行之间打断一个 X-Y 数据对。假设你有一个包含了格式化数据的文件,在每行的中间有一个 X-Y 数据对。每行的其它数据都没有用。假设每行 Y 数据在 X 数据之前,一旦正确的格式声明给出了,就可以用下面的命令:

SAC> readtable content r format \(24x,f12.3,14x,f10.2\) fileb

注意:在左括号和右括号两边的“\”是SAC的转义字符,这很重要,因为 SAC 使用括号作为内联函数。由于没有重复计数器,因而只有一个 Y-X 数据对被从文件的每行读入。

假设你有一个文件 FILEC,其每行包括一个 X 值和7个不同数据集的 Y 值,其为 (8F10.2) 格式。为了在内存中创建7个不同的数据集,可以使用下面的命令:

SAC> readtable content xn . format \(8f10.2\) filec

这将在内存中产生7个不同的数据文件,其名称分别为 FILEC01、FILEC02 等等。

现在假设你不想读入第5个 Y 数据集,可以执行下面的命令:

SAC> readtable content xn6 format \(5f10.20x,2f10.2\) filec

另一个可以少敲键盘但是稍微低效一点的命令如下:

SAC> readtable content xn4in2 format \(8f10.2\) filec

头段变量改变

b、e、delta、leven、depmin、depmax、depmen