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),内容不多,今晚奉上。

 

posted on 2012-11-20 09:12  半个馒头  阅读(253)  评论(0编辑  收藏  举报

导航