R 语言学习笔记 —— bigmomery使用

来源:互联网 发布:chrome linux 32 编辑:程序博客网 时间:2024/06/06 05:09

R语言处理 1G~10G 的数据可以选择使用 bigmemory,超过 10G 可以考虑 RHadoop

1:安装bigmemory

>install.packages('bigmemory')

2:bigmemory的基本使用

1)初始化一个big.matrix对象://nrow:行数    ncol:列数    type:数据类型(矩阵所有数据类型必须是一样的)    init:初始化数据    //dinnames:list对象(两列),第一列表述行标识,第二列表示列标识    backingfile:备份数据   descriptorfile:描述文件> bigData <- big.matrix(nrow=10, ncol=4, type='integer', init=2, dimnames=list(1:10,c('c1','c2', 'c3', 'c4')),                         backingfile='bigData.bin', descriptorfile='bigData.desc')> bigData[1:10]   c1 c2 c3 c41   2  2  2  22   2  2  2  23   2  2  2  24   2  2  2  25   2  2  2  26   2  2  2  27   2  2  2  28   2  2  2  29   2  2  2  210  2  2  2  22)加载存储的大数据对象> loadBigData <- attach.big.matrix('bigData.desc')> loadBigData[1:10]   c1 c2 c3 c41   2  2  2  22   2  2  2  23   2  2  2  24   2  2  2  25   2  2  2  26   2  2  2  27   2  2  2  28   2  2  2  29   2  2  2  210  2  2  2  23)修改bigdata的数据> loadBigData[,1] <- sample(1:10)> loadBigData[,2] <- sample(1:10)> loadBigData[,3] <- sample(1:10)> loadBigData[,4] <- sample(1:4, 10, replace = TRUE)> loadBigData[1:10]   c1 c2 c3 c41   5  1  5  22   9  8  6  43   7  2  3  14   2 10  8  25   3  6  1  36   4  5  4  27  10  3  7  28   6  7 10  39   8  9  2  310  1  4  9  4> flush(loadBigData)> loadBigData[1:10]   c1 c2 c3 c41   5  1  5  22   9  8  6  43   7  2  3  14   2 10  8  25   3  6  1  36   4  5  4  27  10  3  7  28   6  7 10  39   8  9  2  310  1  4  9  44)对数据排序#对第一列扩展排序> loadBigData[morder(loadBigData,1), ]   c1 c2 c3 c410  1  4  9  44   2 10  8  25   3  6  1  36   4  5  4  21   5  1  5  28   6  7 10  33   7  2  3  19   8  9  2  32   9  8  6  47  10  3  7  2#对第一第二列扩展排序> loadBigData[morder(loadBigData,c(1,2)), ]   c1 c2 c3 c410  1  4  9  44   2 10  8  25   3  6  1  36   4  5  4  21   5  1  5  28   6  7 10  33   7  2  3  19   8  9  2  32   9  8  6  47  10  3  7  2#修改backingfile的排序方法> mpermute(loadBigData, cols=1)> loadBigData <- attach.big.matrix('bigData.desc')> loadBigData[1:10]   c1 c2 c3 c41   1  4  9  42   2 10  8  23   3  6  1  34   4  5  4  25   5  1  5  26   6  7 10  37   7  2  3  18   8  9  2  39   9  8  6  410 10  3  7  


3:bigmemory 的进一步使用:

#产生一个200行2列的big.matrix, 奇数行200个位置放服从标准正态分布的随机数,偶数行200个位置,放服从期望位5,方差为4的正态分布随机数> x <- big.matrix(200, 2, init=0, type='double')> x[seq(1, by=2, length.out=100),] <- rnorm(200)> x[seq(2, by=2, length.out=100),] <- rnorm(200, 5, 4)> x[1:10]            [,1]        [,2] [1,] -2.3612342 -0.40590074 [2,]  5.0872598  3.65760201 [3,] -0.5798214  0.19065188 [4,] 10.2198005 10.08644807 [5,] -0.9958245  0.34871651 [6,]  7.6601779  1.16410284 [7,] -0.2727439  0.59410373 [8,] 12.4994794  5.08297463 [9,]  1.0329725 -0.05559646[10,]  2.1791001  1.49228510


0 0
原创粉丝点击