2.4.6 列表(list)的建立
列表的一个显著特性就是它里面什么都可以装,矩阵,向量,数据框。
建立的函数:list()方法和数据框的data.frame()一样,对象和下标提取方法也一致,直接看下面例子吧,看不懂再看数据框里面的内容。
Example:
> foo <- read.table(file = "d:/data.txt", header = T ) #数据框的读取数据
> foo
start end
1 12445063 12445979
2 14092846 14093753
3 44885230 44885994
4 46103076 46103330
5 59591409 59591612
> foo$start_sqrt = sqrt(foo$start) #增加变量的三种方式
> foo$end_sqrt <- with(foo, sqrt(start))
> foo <- transform(foo, istart=1/start, iend=1/end)
> foo
start end start_sqrt end_sqrt istart iend
1 12445063 12445979 3527.756 3527.756 8.035315e-08 8.034724e-08
2 14092846 14093753 3754.044 3754.044 7.095799e-08 7.095342e-08
3 44885230 44885994 6699.644 6699.644 2.227904e-08 2.227866e-08
4 46103076 46103330 6789.925 6789.925 2.169053e-08 2.169041e-08
5 59591409 59591612 7719.547 7719.547 1.678094e-08 1.678089e-08
> aa <- list(1:6, 2:5, matrix(1:6, nrow=2), foo) #建立列表,其中包含向量,矩阵,数据框
> aa
[[1]]
[1] 1 2 3 4 5 6
[[2]]
[1] 2 3 4 5
[[3]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[[4]]
start end start_sqrt end_sqrt istart iend
1 12445063 12445979 3527.756 3527.756 8.035315e-08 8.034724e-08
2 14092846 14093753 3754.044 3754.044 7.095799e-08 7.095342e-08
3 44885230 44885994 6699.644 6699.644 2.227904e-08 2.227866e-08
4 46103076 46103330 6789.925 6789.925 2.169053e-08 2.169041e-08
5 59591409 59591612 7719.547 7719.547 1.678094e-08 1.678089e-08
> aa <- list(x=1:6, 2:5, y=matrix(1:6, nrow=2), foo) #可以直接把向量或者矩阵赋值给变量,这样就可以用变量名提取数值
> aa
$x
[1] 1 2 3 4 5 6
[[2]]
[1] 2 3 4 5
$y
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[[4]]
start end start_sqrt end_sqrt istart iend
1 12445063 12445979 3527.756 3527.756 8.035315e-08 8.034724e-08
2 14092846 14093753 3754.044 3754.044 7.095799e-08 7.095342e-08
3 44885230 44885994 6699.644 6699.644 2.227904e-08 2.227866e-08
4 46103076 46103330 6789.925 6789.925 2.169053e-08 2.169041e-08
5 59591409 59591612 7719.547 7719.547 1.678094e-08 1.678089e-08
> aa[1] #提取一个变量
$x
[1] 1 2 3 4 5 6
> aa[[1]] #提取一边变量中的内容
[1] 1 2 3 4 5 6
> aa$x #用名称提取
[1] 1 2 3 4 5 6
> aa[[1]][3] #变量中元素的提取
[1] 3
> aa$x[3]
[1] 3
> aa[4]
[[1]]
start end start_sqrt end_sqrt istart iend
1 12445063 12445979 3527.756 3527.756 8.035315e-08 8.034724e-08
2 14092846 14093753 3754.044 3754.044 7.095799e-08 7.095342e-08
3 44885230 44885994 6699.644 6699.644 2.227904e-08 2.227866e-08
4 46103076 46103330 6789.925 6789.925 2.169053e-08 2.169041e-08
5 59591409 59591612 7719.547 7719.547 1.678094e-08 1.678089e-08
> aa[[4]][2] #在这儿,aa[[4]]就相当于foo
end
1 12445979
2 14093753
3 44885994
4 46103330
5 59591612
> foo[2]
end
1 12445979
2 14093753
3 44885994
4 46103330
5 59591612
> aa[[4]][,2]
[1] 12445979 14093753 44885994 46103330 59591612
> foo[,2]
[1] 12445979 14093753 44885994 46103330 59591612
下面一个是时间序列分析(ts),内容不多,今晚奉上。