table

语法

table(X, [X1], [X2], …..)

table(capacity:size, colNames, colTypes)

参数

第一种用法中,X, X1, X2 … 可以是向量、矩阵或元组。每个向量的长度、矩阵中每列长度、以及元组中每个元素的长度都必须相同。

第二种用法中:

capacity 是正整数,表示建表时系统为该表分配的内存(以记录数为单位)。当记录数超过 capacity 时,系统首先会分配 capacity 1.2~2倍的新的内存空间,然后复制数据到新的内存空间,最后释放原来的内存。对于规模较大的表,此类操作的内存占用会很高。因此,建议创建内存表时预先分配一个合理的 capacity

size 是正整数,表示该表新建时的行数。若size=0,创建一个空表。 注意如果colTypes指定为数组向量,size必须为0。

colNames 是一个向量,表示列名。

colTypes 是一个向量,表示每列的数据类型,1.30.7版本及以上支持datehour类型。可使用表示数据类型的系统保留字或相应的字符串。

详情

创建一个内存数据表。

1.30.16/2.00.4及以上版本支持增加或修改包含时间类型的数据时,自动转换时间类型为定义表时指定的类型。

例子

第一种用法:

$ id=`XOM`GS`AAPL
$ x=102.1 33.4 73.6
$ table(id, x);

id

x

XOM

102.1

GS

33.4

AAPL

73.6

$ table(`XOM`GS`AAPL as id, 102.1 33.4 73.6 as x);

id

x

XOM

102.1

GS

33.4

AAPL

73.6

$ m=matrix(1 2, 3 4, 5 6);
$ m;

#0

#1

#2

1

3

5

2

4

6

$ table(m);

C0

C1

C2

1

3

5

2

4

6

$ m.rename!(1 2, `a`b`x);
$ m;

a

b

x

1

1

3

5

2

2

4

6

$ table(m);

a

b

x

1

3

5

2

4

6

$ x=1..6
$ y=matrix(11..16, 17..22)
$ z=(101..106, 201..206)
$ t=table(x,y,z)
$ t.rename!(`x`y1`y2`z1`z2);

$ t;

x

y1

y2

z1

z2

1

11

17

101

201

2

12

18

102

202

3

13

19

103

203

4

14

20

104

204

5

15

21

105

205

6

16

22

106

206

第二种用法:

$ table(100:5, `name`id`value, [STRING,INT,DOUBLE]);

name

id

value

0

0

0

0

0

0

0

0

0

0

$ table(100:5, `name`id`value, `STRING`INT`DOUBLE);

name

id

value

0

0

0

0

0

0

0

0

0

0

$ table(100:1, [`value], [DOUBLE]);

value

0

$ n=10
$ colNames = `time`sym`id
$ colTypes = [DATE,SYMBOL,INT]
$ t = table(n:0, colNames, colTypes)
$ insert into t values(2020.01.05 13:30:10.008, `A1, 1)
$ insert into t values(2020.01.06 13:30:10.008, `A2, 2)
$ insert into t values(2020.06M, `A3, 3)

$ update t set time=2020.06.13 13:30:10 where sym=`A1

$ select * from t

time

sym

id

2020.06.13

A1

1

2020.01.06

A2

2

2020.06.01

A3

3