我试图使用该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"循环"忽略错误消息(或者至少更优雅地处理它)?

我正在尝试最小化上面显示的功能.我在(-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) 到目前为止,我已经设法让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中运行?此外,为什么它突然停止工作没有明显的原因.
非常感谢.