数据对
概述
一个数据对包含了两个标量值。这两个标量值的数据类型必须相同。数据对是只有两个值的特殊的向量。
数据对类型的数据可用于:
(1) 代表数据范围。
数据范围不包含上限的有以下几种情况:
一是表示索引:
$ x=5 3 6 2;
$ x[1:3];
[3,6]
$ a=rand(1000.0,20000000)
$ b=a.subarray(0:1000000);
$ m=matrix(1 2 3 4, 5 6 7 8, 9 10 11 12);
$ m;
#0 |
#1 |
#2 |
---|---|---|
1 |
5 |
9 |
2 |
6 |
10 |
3 |
7 |
11 |
4 |
8 |
12 |
$ m[1:2, 0:2];
#0 |
#1 |
---|---|
2 |
6 |
二是表示 for-loop 的范围:
$ for(s in 1:3){print s};
1
2
三是在 bucket 或 bucketCount 函数中:
$ bucket(4 0 1 3 2, 0:4, 2);
[,0,0,1,1]
其它情况下,数据范围均包含上限。
$ [5,6,8] between 1:6;
[1,1,0]
$ t1 = table(`A`A`B as sym, 09:56:06 09:56:07 09:56:06 as time, 10.6 10.7 20.6 as price)
$ t2 = table(take(`A,10) join take(`B,10) as sym, take(09:56:00+1..10,20) as time, (10+(1..10)\10-0.05) join (20+(1..10)\10-0.05) as bid, (10+(1..10)\10+0.05) join (20+(1..10)\10+0.05) as offer, take(100 300 800 200 600, 20) as volume)
$ wj(t1, t2, -5:0, <avg(bid)>, `sym`time);
\(2) 表示矩阵的维度。比如”2:5”表示一个2乘5的矩阵。如果一个一维数组x有10个元素,x\(2:5 表示把x转化为2乘5的矩阵,“\)”表示转化。
(3) 创建 table 时指定容量和初始行数。
$ t=table(100:0, `date`sym`high`low`close, [DATE,SYMBOL,DOUBLE,DOUBLE,DOUBLE]);
创建数据对
使用冒号”:”或者 pair 函数来创建数据对数据。
$ 1:3;
$ 3.4:7.8;
$ 1b:0b;
1:0
$ true:false;
1:0
$ 2013.06.13:2013.11.10;
$ 5 pair 6;
5:6
$ `Hello:`World;
"Hello" : "World"
访问数据对
用X[Y]的形式访问数据对数据。Y可以是整数也可以是整数向量,或者数据对。
$ x = 3:6;
$ x[1];
6
$ x[0 1];
[3,6]
修改数据对
$ x=3:6;
$ x[0]=4;
$ x;
4:6
// 数据对中的两个值可以分别被修改。
$ x=3:6+1;
$ x;
4 : 7
// 注意结果不是3:7。详见运算的定义。