Deep copy of a Filebacked Big Matrix with possible subsetting. This should also work for any matrix-like object.
big_copy(
X,
ind.row = rows_along(X),
ind.col = cols_along(X),
type = typeof(X),
backingfile = tempfile(tmpdir = getOption("FBM.dir")),
block.size = block_size(length(ind.row)),
is_read_only = FALSE
)
Could be any matrix-like object.
An optional vector of the row indices that are used. If not specified, all rows are used. Don't use negative indices.
An optional vector of the column indices that are used. If not specified, all columns are used. Don't use negative indices.
Type of the Filebacked Big Matrix (default is double
). Either
"double"
(double precision -- 64 bits)
"float"
(single precision -- 32 bits)
"integer"
"unsigned short"
: can store integer values from 0 to 65535.
It has vocation to become the basis for a FBM.code65536
.
"raw"
or "unsigned char"
: can store integer values from 0 to 255.
It is the basis for class FBM.code256 in order to
access 256 arbitrary different numeric values.
It is used in package bigsnpr.
Path to the file storing the FBM data on disk. An extension ".bk" will be automatically added. Default stores in the temporary directory, which you can change using global option "FBM.dir".
Maximum number of columns read at once. Default uses block_size.
Whether the FBM is read-only? Default is FALSE
.
A copy of X
as a new FBM object.
X <- FBM(10, 10, init = 1:100)
X[]
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] 1 11 21 31 41 51 61 71 81 91
#> [2,] 2 12 22 32 42 52 62 72 82 92
#> [3,] 3 13 23 33 43 53 63 73 83 93
#> [4,] 4 14 24 34 44 54 64 74 84 94
#> [5,] 5 15 25 35 45 55 65 75 85 95
#> [6,] 6 16 26 36 46 56 66 76 86 96
#> [7,] 7 17 27 37 47 57 67 77 87 97
#> [8,] 8 18 28 38 48 58 68 78 88 98
#> [9,] 9 19 29 39 49 59 69 79 89 99
#> [10,] 10 20 30 40 50 60 70 80 90 100
X2 <- big_copy(X, ind.row = 1:5)
X2[]
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] 1 11 21 31 41 51 61 71 81 91
#> [2,] 2 12 22 32 42 52 62 72 82 92
#> [3,] 3 13 23 33 43 53 63 73 83 93
#> [4,] 4 14 24 34 44 54 64 74 84 94
#> [5,] 5 15 25 35 45 55 65 75 85 95
mat <- matrix(101:200, 10)
X3 <- big_copy(mat, type = "double") # as_FBM() would be faster here
X3[]
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] 101 111 121 131 141 151 161 171 181 191
#> [2,] 102 112 122 132 142 152 162 172 182 192
#> [3,] 103 113 123 133 143 153 163 173 183 193
#> [4,] 104 114 124 134 144 154 164 174 184 194
#> [5,] 105 115 125 135 145 155 165 175 185 195
#> [6,] 106 116 126 136 146 156 166 176 186 196
#> [7,] 107 117 127 137 147 157 167 177 187 197
#> [8,] 108 118 128 138 148 158 168 178 188 198
#> [9,] 109 119 129 139 149 159 169 179 189 199
#> [10,] 110 120 130 140 150 160 170 180 190 200
X.code <- big_attachExtdata()
class(X.code)
#> [1] "FBM.code256"
#> attr(,"package")
#> [1] "bigstatsr"
X2.code <- big_copy(X.code)
class(X2.code)
#> [1] "FBM.code256"
#> attr(,"package")
#> [1] "bigstatsr"
all.equal(X.code[], X2.code[])
#> [1] TRUE