人们用什么技巧来管理交互式R会话的可用内存?我使用下面的函数[根据Petr Pikal和David Hinds在2004年的r-help列表中的帖子]列出(和/或排序)最大的对象,偶尔列出rm()其中的一些.但到目前为止,最有效的解决方案是在具有充足内存的64位Linux下运行.
人们想分享其他任何好玩的伎俩吗?请发一个帖子.
# improved list of objects
.ls.objects <- function (pos = 1, pattern, order.by,
decreasing=FALSE, head=FALSE, n=5) {
napply <- function(names, fn) sapply(names, function(x)
fn(get(x, pos = pos)))
names <- ls(pos = pos, pattern = pattern)
obj.class <- napply(names, function(x) as.character(class(x))[1])
obj.mode <- napply(names, mode)
obj.type <- ifelse(is.na(obj.class), obj.mode, obj.class)
obj.size <- napply(names, object.size)
obj.dim <- t(napply(names, function(x)
as.numeric(dim(x))[1:2]))
vec <- is.na(obj.dim)[, 1] & (obj.type != "function")
obj.dim[vec, 1] <- napply(names, length)[vec]
out <- data.frame(obj.type, …Run Code Online (Sandbox Code Playgroud) 我想做的是采用这个矩阵:
> partb
0.5 1.5 1a 1b -2 -3
A1FCLYRBAB430F 0.26 0.00 0.74 0.00 0.00 0.00
A1SO604B523Q68 0.67 0.33 0.00 0.00 0.00 0.00
A386SQL39RBV7G 0.00 0.33 0.33 0.33 0.00 0.00
A3GTXOXRSE74WD 0.41 0.00 0.08 0.03 0.05 0.44
A3OOD9IMOHPPFQ 0.00 0.00 0.33 0.00 0.33 0.33
A8AZ39QM2A9SO 0.13 0.54 0.18 0.13 0.00 0.03
Run Code Online (Sandbox Code Playgroud)
然后制作一个热图,其中包含现在有色单元格中的每个值.
制作热图很容易:
> heatmap( partb, Rowv=NA, Colv=NA, col = heat.colors(256), margins=c(5,10))
Run Code Online (Sandbox Code Playgroud)
但是对于我的生活,我无法弄清楚如何将价值放在每个细胞中.
我错过了什么?当然这是常见的事情.
我们正在使用R来吐出在闪亮的应用程序(网页)上呈现的绘图(热图).目前,我们面临着一个问题,即R渲染绘图需要花费时间来进行计算.让我通过一个人为的例子来表达同样的看法.在这个基本测试用例中,R需要大约17秒的时间来渲染并将热图文件保存为png(数据计算机时间被取出:行和列集群已预先计算)
我想知道有没有办法减少渲染这种情节类型所需的时间.也许我在其他一些常量计算中缺失,这些计算也可以从热图函数中取出.
谢谢!
生成数据
m1 <- matrix(rnorm(500000,mean=15,sd=4),ncol=100)
m2 <- matrix(rnorm(500000,mean=30,sd=3),ncol=100)
m <- cbind(m1,m2)
dim(m)
Run Code Online (Sandbox Code Playgroud)
所有计算的基本热图
png('test_heatmap.png')
system.time(heatmap(m))
user system elapsed
29.327 0.637 30.526
Run Code Online (Sandbox Code Playgroud)
从热图功能中进行聚类:主要是测试绘图渲染时间
> system.time(hcr <- hclust(dist(m)))
user system elapsed
9.992 0.126 10.144
> system.time(hcc <- hclust(dist(t(m))))
user system elapsed
0.659 0.002 0.662
> system.time(ddr <- as.dendrogram(hcr))
user system elapsed
0.498 0.010 0.508
> system.time(ddc <- as.dendrogram(hcc))
user system elapsed
0.011 0.000 0.011
Run Code Online (Sandbox Code Playgroud)
热图渲染时间与预先计算的行/列树形图
png('test_heatmap.png')
> system.time(heatmap(m,Rowv=ddr,Colv=ddc))
user system elapsed
16.128 0.558 17.171
Run Code Online (Sandbox Code Playgroud) 我有一个由70,000个数值组成的数据集,表示从0到50的距离,我想聚集这些数字; 然而,如果我正在尝试经典的聚类方法,那么我将不得不建立一个70,000X70,000距离矩阵,表示我的数据集中每两个数字之间的距离,这将不适合内存,所以我想知道是否有是否有任何聪明的方法来解决这个问题,而无需进行分层抽样?我还尝试过R中的bigmemory和大分析库,但仍然无法将数据放入内存中
嗨我使用"heatmap.plus"在R中创建了一个热图,它显示在链接中
http://i.stack.imgur.com/hizBf.jpg
但我需要热图看起来像下面链接中显示的热图,它是从其他GUI软件创建的
http://i.stack.imgur.com/Y8Faj.png
如何在R中的每个热图元素中添加黑色边框
R的热图和pheatmap无法通过抛出此错误来生成集群.
Error in vector("double", length) : vector size specified is too large
Run Code Online (Sandbox Code Playgroud)
有谁知道我怎么能想象那个大矩阵?