小编sla*_*ess的帖子

R中foreach()内的try()问题

我试图使用该try()函数来处理我的并行化for循环中发生的错误:

results <- foreach (i = 1:2, .errorhandling = 'remove') %dopar% {
    res <- try(myfun(i), TRUE)
}
Run Code Online (Sandbox Code Playgroud)

myfun <- function(i){
    if (i==1) return(rnorm(1))
    else stop('error')
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息

Error in checkForRemoteErrors(val) : 
  one node produced an error: Error in myfun(i) : error
Run Code Online (Sandbox Code Playgroud)

如何让foreach"循环"忽略错误消息(或者至少更优雅地处理它)?

parallel-processing foreach r try-catch

14
推荐指数
2
解决办法
3199
查看次数

R optim实现中的布伦特方法总是返回相同的局部最小值

功能最小化

我正在尝试最小化上面显示的功能.我在(-1,1)之间搜索.我使用以下代码

optim(runif(1,min=-1,max=+1), ..., method = "Brent", lower = -1.0, upper = 1.0)
Run Code Online (Sandbox Code Playgroud)

而且我注意到它总是返回x = -0.73的值,而不是正确的x = 0.88答案.原因在optimise帮助页面中给出:

f的第一次评估总是在x_1 = a +(1-φ)(ba),其中(a,b)=(下,上)和phi =(sqrt(5)-1)/ 2 = 0.61803 ..是黄金分割比例.几乎总是,第二次评估是在x_2 = a + phi(ba).请注意,[x_1,x_2]内的局部最小值将作为解,即使f在那里是常数,请参见最后一个示例.

我很好奇是否有任何方式使用布伦特的方法而不是每次都达到相同的局部最小值.

将方法更改为"L-BFGS-B"的效果更好(每次返回一个随机的局部最小值):

optim(runif(1,min=-1,max=+1), ..., method = "L-BFGS-B", lower = -1.0, upper = 1.0)
Run Code Online (Sandbox Code Playgroud)

optimization r

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

使图例不可见,但在ggplot2中保持图形尺寸和边距相同

我用传奇制作了一个情节.

在此输入图像描述

使用图像编辑程序我使图例不可见(但图形具有相同的尺寸)

在此输入图像描述

是否可以在ggplot2中执行此操作?我希望在文档中有一个2x2的图表面板,但只有一个图例.

r ggplot2

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

Xcode 4.3.3找不到任何头文件

到目前为止,我已经设法让Xcode链接到我在/ usr/local/lib /下安装的Gnu Scientific Libraries(GSL)以及/ usr/local/include下的头文件.在"Build Phases">"Link Binary with Libraries"下我添加了libgsl.a等.今天,Xcode提供了一条错误消息,声称它无法找到头文件.

例如

#include <stdio.h>
#include <gsl/gsl_matrix.h>

int main(int argc, const char * argv[])
{

    printf("Hello, World!\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

导致找不到'gsl/gsl_matrix.h'文件.我试图将用户标题搜索路径更改为无效.在命令行上使用gcc main.c -lgsl -lgslcblas可以很好地工作.谁能告诉我究竟需要做些什么才能让它在Xcode中运行?此外,为什么它突然停止工作没有明显的原因.

非常感谢.

xcode header-files gsl

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