【发布时间】:2015-11-16 17:42:39
【问题描述】:
我正在使用bigmemory 和biganalytics 包,并专门尝试计算big.matrix 对象的平均值。 biganalytics 的文档(例如?biganalytics)建议mean() 应该可用于big.matrix 对象,但这失败了:
x <- big.matrix(5, 2, type="integer", init=0,
+ dimnames=list(NULL, c("alpha", "beta")))
x
# An object of class "big.matrix"
# Slot "address":
# <pointer: 0x00000000069a5200>
x[,1] <- 1:5
x[,]
# alpha beta
# [1,] 1 0
# [2,] 2 0
# [3,] 3 0
# [4,] 4 0
# [5,] 5 0
mean(x)
# [1] NA
# Warning message:
# In mean.default(x) : argument is not numeric or logical: returning NA
虽然有些事情没问题:
colmean(x)
# alpha beta
# 3 0
sum(x)
# [1] 15
mean(x[])
# [1] 1.5
mean(colmean(x))
# [1] 1.5
没有mean(),似乎mean(colmean(x)) 是次优:
# try it on something bigger
x = big.matrix(nrow=10000, ncol=10000, type="integer")
x[] <- c(1:(10000*10000))
mean(colmean(x))
# [1] 5e+07
mean(x[])
# [1] 5e+07
system.time(mean(colmean(x)))
# user system elapsed
# 0.19 0.00 0.19
system.time(mean(x[]))
# user system elapsed
# 0.28 0.11 0.39
大概mean() 可能会更快,尤其是对于具有大量列的矩形矩阵。
知道为什么mean() 不适合我吗?
【问题讨论】:
-
你能提供你的
sessionInfo()吗?我刚刚使用 R 3.2.2 安装了bigmemory和biganalytics,它没有问题。 -
好的,重新安装
biganalytics解决了。不知道那里出了什么问题。
标签: r r-bigmemory