我必须使用 big.matrix 对象,并且我无法计算某些函数。让我们考虑以下 big.matrix:
# create big.matrix object
x <- as.big.matrix(
matrix( sample(1:10, 20, replace=TRUE), 5, 4,
dimnames=list( NULL, c("a", "b", "c", "d")) ) )
> x
An object of class "big.matrix"
Slot "address":
<pointer: 0x00000000141beee0>
对应的矩阵对象为:
# create matrix object
x2<-x[,]
> x2
a b c d
[1,] 6 9 5 3
[2,] 3 6 10 8
[3,] 7 1 2 8
[4,] 7 8 4 10
[5,] 6 3 6 4
如果我用矩阵对象计算这个操作,它可以工作:
sqrt(slam::col_sums(x2*x2))
> sqrt(slam::col_sums(x2*x2))
a b c d
13.37909 13.82027 13.45362 15.90597
虽然如果我使用 big.matrix 对象(实际上是我必须使用的),但它不起作用:
sqrt(biganalytics::colsum(x*x))
问题是 2:* 操作(创建矩阵每个元素的平方),它会产生错误:
x * x 中的错误:非数字参数转换为二元运算符
以及产生错误的 sqrt 函数:
sqrt(x) 中的错误:数学函数的非数字参数。
如何使用 big.matrix 对象计算此操作?