小编inh*_*kht的帖子

内存分配"错误:无法分配大小为75.1 Mb的向量"

在矢量化一些模拟代码的过程中,我遇到了内存问题.我在Windows XP下使用32位R版本2.15.0(通过RStudio版本0.96.122).我的机器有3.46 GB的RAM.

> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United Kingdom.1252   
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C                           
[5] LC_TIME=English_United Kingdom.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] Matrix_1.0-6   lattice_0.20-6 MASS_7.3-18   

loaded via a namespace (and not attached):
[1] grid_2.15.0  tools_2.15.0
Run Code Online (Sandbox Code Playgroud)

以下是问题的最小示例:

> memory.limit(3000)
[1] 3000
> rm(list = ls())
> gc()
          used (Mb) gc trigger  (Mb)  max used   (Mb)
Ncells 1069761 28.6    1710298  45.7   1710298   45.7
Vcells …
Run Code Online (Sandbox Code Playgroud)

memory-management r

32
推荐指数
2
解决办法
11万
查看次数

使用ggplot2在分面点图中的因子顺序

我试图改变ggplot2中刻面点图的各个方面的绘图顺序,但我无法让它工作.这是我的融化数据集:

> London.melt
                      country medal.type count
1                 South Korea       gold    13
2                       Italy       gold     8 
3                      France       gold    11
4                   Australia       gold     7
5                       Japan       gold     7
6                     Germany       gold    11
7  Great Britain & N. Ireland       gold    29
8          Russian Federation       gold    24
9                       China       gold    38
10              United States       gold    46
11                South Korea     silver     8
12                      Italy     silver     9
13                     France     silver    11
14                  Australia     silver    16
15                      Japan     silver    14
16                    Germany     silver    19
17 Great …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

8
推荐指数
1
解决办法
2706
查看次数

删除XML包中readHTMLTable中的标记

我正在尝试从以下网址的表中抓取数据:

http://www.nfpa.org/itemDetail.asp?categoryID=953&itemID=23033
Run Code Online (Sandbox Code Playgroud)

问题是包含在内的上标

<sup> </sup>
Run Code Online (Sandbox Code Playgroud)

标签.当我使用以下代码时(诚然不是很优雅)

url.overview <- "http://www.nfpa.org/itemDetail.asp?categoryID=953&itemID=23033"
overview <- readHTMLTable(overview)
overview <- overview[[2]]
overview <- overview[-1,]

f <- function(x){
  out <- iconv(x, "latin1", "ASCII", sub="")
  out <- gsub('[\\$,]', '', out) 
  out <- as.numeric(out)
  return(out)
}

overview <- matrix(f(as.character(unlist(overview))), ncol = ncol(overview))
overview <- as.data.frame(overview)
names(overview) <- c('year', 'fires', 'civ.deaths', 'civ.injuries', 'ff.deaths',
                     'ff.injuries', 'damage.reported', 'damage.2010dollars')
Run Code Online (Sandbox Code Playgroud)

我得到了我想要的东西,除了上标中的值被附加到表格单元格中的值的末尾.例如,(使用上面给出的URL中的行和列名称)2001年的平民死亡当它们应该是6196时存储为61963,因为上标3被解释为额外的数字.表中缺少上标的任何单元都完全正确.

经过几个小时努力完成文档后,我能够使用这些函数parseHTMLgetNodeSet从XML包中识别出包含<sup>标签的所有节点,但无法弄清楚该做什么:

overview <- htmlParse(url.overview)
getNodeSet(overview, "//sup")
Run Code Online (Sandbox Code Playgroud)

我认为我需要删除XML树的这些部分,然后将结果传递回readHTMLTable进行进一步处理,但我无法弄清楚如何执行此操作.

我非常感谢你的想法.

r

6
推荐指数
1
解决办法
605
查看次数

在R中设置稀疏矩阵的更快方法?

我正在尝试在R中设置一种特殊的稀疏矩阵.下面的代码给出了我想要的结果,但速度非常慢:

library(Matrix)

f <- function(x){

  out <- rbind(head(x, -1), tail(x, -1))
  out <- bdiag(split(out, col(out)))
  return(out)

}#END f 

x <- outer(1:250, (1:5)/10, '+')
do.call(rBind, apply(x, 1, f))
Run Code Online (Sandbox Code Playgroud)

在我正在进行的模拟研究中,我需要做成千上万次,所以这是一个相当严重的瓶颈.在这种情况下,Rprof()输出非常混乱.我很感激您对如何加快速度提出的任何建议.

感谢您的时间.

r

4
推荐指数
1
解决办法
1076
查看次数

如何在RcppArmadillo中复制随机抽奖?

这是一个C++函数,用于绘制N具有平均零和标准偏差的独立法向偏差s

// [[Rcpp::depends(RcppArmadillo)]]

#include <RcppArmadillo.h>
using namespace Rcpp;

// [[Rcpp::export]] 
List rnorm_cpp(double s, int N){

    arma::colvec epsilon = s * arma::randn(N);
    return List::create(Named("e") = epsilon);

}
Run Code Online (Sandbox Code Playgroud)

这是一个(几乎相同的)R版本

rnormR <- function(s, N){

  epsilon <- rnorm(N, mean = 0, sd = s)
  return(list(e = epsilon))

}    
Run Code Online (Sandbox Code Playgroud)

采购后rnorm_cpprnormR我跑了以下内容:

set.seed(1234)
fooR <- rnormR(s = 5, N = 10)

set.seed(1234)
barR <- rnormR(s = 5, N = 10)

set.seed(1234)
fooCpp <- rnorm_cpp(s = 5, N = 10)

set.seed(1234) …
Run Code Online (Sandbox Code Playgroud)

r rcpp

4
推荐指数
1
解决办法
1189
查看次数

标签 统计

r ×5

ggplot2 ×1

memory-management ×1

rcpp ×1