小编ram*_*ser的帖子

在什么情况下应该使用new.env来创建新环境?

在"什么是最有用的R技巧?" (这里),我读到使用环境给出"传递参考功能".这种方法有任何限制和/或陷阱吗?

另外,一般来说,使用创建环境的优缺点是什么?这是我一直困惑的事情,所以任何清晰度或参考对我都非常有帮助.

先感谢您.

r

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

R中的矢量化与并行化

作为玩具示例,假设我们有一个名为'my_func'的函数(代码在下面),它带有两个参数'n'和'p'.我们的函数'my_func'将生成一个带有'n'行和'p'列的随机矩阵'x',并在运行时和内存使用中做一些昂贵的事情,比如计算'x'的奇异值之和.(当然,这个功能是一个单行,但我在这里为了可读性而拍摄.)

my_func <- function(n, p) {
  x <- replicate(p, rnorm(n))
  sum(svd(x)$d)
}
Run Code Online (Sandbox Code Playgroud)

如果我们希望为'n'的几个值计算'my_func',并且对于'n'的每个值,我们有几个'p'值,然后向量化函数然后将组合应用到'my_func'是很简单的:

n <- 10 * seq_len(5)
p <- 100 * seq_len(10)
grid <- expand.grid(n = n, p = p)
my_func <- Vectorize(my_func)
set.seed(42)
do.call(my_func, grid)
[1]   98.61785  195.50822  292.21575  376.79186  468.13570  145.18359
[7]  280.67456  421.03196  557.87138  687.75040  168.42994  340.42452
[13]  509.65528  683.69883  851.29063  199.08474  400.25584  595.18311
[19]  784.21508  982.34591  220.73215  448.23698  669.02622  895.34184
[25] 1105.48817  242.52422  487.56694  735.67588  976.93840 1203.25949
Run Code Online (Sandbox Code Playgroud)

请注意,每次调用'my_func'对于大'n'和'p'来说都会非常缓慢(对于初学者来说,尝试n = 1000和p = 2000).

现在,在我使用类似构造函数的实际应用程序中,'grid'中的行数远大于此处给出的行数.因此,我试图更好地理解R中的矢量化.

第一个问题:在上面的例子中,是否按顺序执行对'my_func'的调用,以便在下一次调用之前对一次调用中的内存使用情况进行垃圾收集?我经常使用矢量化但从未停止过问这个问题.

第二个问题:(这个问题可能取决于第一)假设呼叫的数量足够大,并且"my_func,并将"足够慢,在这里并行保证?我假设是的.我 …

r vectorization

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

安装 Cairo R 包时出错

我尝试Cairo在 Mac OS X 10.7.4 上的 R 开发版本中安装该软件包,但遇到了无法解决的问题。

\n\n

我已经使用自制程序(即brew install cairo)安装了 Cairo 并收到以下消息:

\n\n
\n

==> 注意事项此公式仅适用于小桶,因此未符号链接到 /usr/local 中。

\n\n

Mac OS X 已经提供了这个程序,并行安装另一个版本可能会导致各种麻烦。

\n\n

Leopard 提供的 Cairo 太旧,无法链接到较新的软件。

\n\n

一般来说,这不会给您带来任何后果。如果您构建自己的软件并且需要此公式,则需要添加其 lib 并包含构建变量的路径:

\n\n
LDFLAGS  -L/usr/local/Cellar/cairo/1.12.2/lib\nCPPFLAGS -I/usr/local/Cellar/cairo/1.12.2/include\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

考虑到上述消息,我尝试Cairo使用以下 R 命令从 R-Forge 安装软件包:

\n\n
\n

install.packages("Cairo", repos="http://www.rforge.net/", configure.args = c("CAIRO_LIBS=/usr/local/Cellar/cairo/1.12.2/lib", "CAIRO_CFLAGS =/usr/local/Cellar/cairo/1.12.2/include/cairo"))

\n
\n\n

我收到以下错误:

\n\n
\n

检查 cairo.h 可用性...否

\n\n

检查 cairo.h 是否存在...否

\n\n

正在检查 cairo.h...没有

\n\n

配置:错误:找不到 cairo.h!

\n\n

请安装 …

macos r cairo

3
推荐指数
1
解决办法
8406
查看次数

标签 统计

r ×3

cairo ×1

macos ×1

vectorization ×1