小编Rom*_*kyi的帖子

将多边形添加到R闪亮的传单地图

如何从全局管理区域添加多边形,以便可以单击它们.

docs我试过的简单方法描述的是

adm <- getData('GADM', country='UKR', level=1)
leaflet() %>% addTiles() %>% addPolygons(data=adm, weight = 3, fillColor = col)
Run Code Online (Sandbox Code Playgroud)

但想象一下,我想要一个将在稍后进行onClick操作的传单地图.

基于SuperZip,我需要有类似的东西

  map <- createLeafletMap(session, "map")
  session$onFlushed(once=TRUE, function() {
     map$addPolygon(...) 
  })
Run Code Online (Sandbox Code Playgroud)

但是,没有addPolygon方法,我很困惑它将如何工作SpartialPolygons.

我也试过转换geoJSON,类似于https://ropensci.org/blog/2013/10/23/style-geojson-polygon/或这个SO问题,但正在做

  polys <- fromJSON(<json data file>)
  map <- createLeafletMap(session, "map")
  session$onFlushed(once=TRUE, function() {
    map$geoJson(polys)
  })
Run Code Online (Sandbox Code Playgroud)

给我一个错误

Error in func() : attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)

有办法吗?或者我做错了什么?

r shapefile leaflet shiny

14
推荐指数
1
解决办法
9888
查看次数

如何访问正在跟踪的函数的返回值

是否有任何方法可以访问由指定为exit param的函数跟踪的函数的返回值以进行跟踪?这听起来很难理解,但我无法在不丢失信息的情况下简化问题.所以这是一个简单的例子.

我们有一个简单的功能

add10 <- function(a){
  a + 10
}
Run Code Online (Sandbox Code Playgroud)

还有一些我们想要在调用add10时调用的函数退出.

trace.exit() <- function(){
...
}
Run Code Online (Sandbox Code Playgroud)

跟踪设置方式如下.

trace(add10, exit=trace.exit)
Run Code Online (Sandbox Code Playgroud)

我们打电话给add10

add10(5)
Run Code Online (Sandbox Code Playgroud)

据我所知,trace.exit将在add10完成执行后调用.有没有办法获取add10里面的返回值trace.exit

我觉得应该有.但是玩耍sys.frames并环顾环境我无法得到它.

这样做的原因是希望捕获对某些函数的所有调用并返回它们给出的值.

UPD解决方案与包装器或类似的东西很好,但trace已经实现了装饰器模式,所以我的问题是关于访问返回值trace,而不是解决R中装饰器的问题.

debugging trace r

9
推荐指数
1
解决办法
172
查看次数

圈子Android Canvas上的内部阴影

我需要在Circle上绘制内部阴影和渐变,我在我的视图的onDraw()方法中绘制了这个(对不起,因为我是StackOverflow的新手,我还无法发布图像)

我弄清楚如何使梯度工作,但我无法完成内部阴影所有我发现到目前为止这篇文章,但它似乎有点复杂,不完全是我需要的

我已经尝试过使用setShadowLayer()了,但我可能无法让它正常工作,因为除了内部阴影,我也得到了外阴影,这不是我需要的

任何帮助,将不胜感激.

谢谢!

android draw android-ui android-layout

7
推荐指数
1
解决办法
2408
查看次数

Java 子串 endindex-1

substring在一个项目中使用,之前我使用的endindex位置没有创建预期的结果,后来我才知道 javasubstring可以endindex-1。我发现它没有用。那么为什么 Java 正在做endindex-1而不是普通的endindex呢?

我的代码如下。

String str = "0123456789";
String parameter1 = str.substring(0,4);
String parameter2 = str.substring(5,8);`
Run Code Online (Sandbox Code Playgroud)

java string substring

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

git revert:在实际还原之前是否可以识别可能存在冲突的提交?

有没有办法识别特定提交的"附带"提交(编辑相同行并将导致冲突的提交)?

一个非常简单的例子

$ git init
$ echo test > test
$ git add test
$ git commit -m "First commit"
$ echo test1 > test
$ git commit -am "Second commit"
$ git l
* 95a29dd Second commit
* 30a68e6 First commit
$ type test
test1
Run Code Online (Sandbox Code Playgroud)

假设在这一点上无论出于何种原因我想要恢复30a68e6.

$ git revert 30a68e6
error: could not revert 30a68e6... First commit
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and …
Run Code Online (Sandbox Code Playgroud)

git git-revert

5
推荐指数
1
解决办法
115
查看次数

是否有可能在C中捕获Rf_eval R的错误?

我需要捕捉的错误Rf_evalC.这甚至可能吗?

一些样本功能

SEXP foo(SEXP x, SEXP env) {
   SEXP res;
   PROTECT(res = Rf_eval(x, env));
   UNPROTECT(1); 
   return res;
}
Run Code Online (Sandbox Code Playgroud)

我试图Rcpp_evalRcppRcpp11,但他们都没有为我的情况下工作,我需要调用Rf_eval直接.是否有可能直接在C中捕获错误?如果是这样的话?

c r try-catch

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

迭代S4对象槽Rcpp

是否可以迭代S4对象槽?

到目前为止,我能够想出这个.但我真的想避免调用R函数slotNames.是否有可能在C/C++级别上做同样的事情?

// [[Rcpp::export]]
void foo(SEXP x) {
  Rcpp::S4 obj(x);
  Function slotNames("slotNames"); 
  CharacterVector snames = slotNames(obj);
  for (int i = 0; i < snames.size(); i++) {
    SEXP slot = obj.slot(Rcpp::as<std::string>(snames[i]));
    // do something with slot
  }
}
Run Code Online (Sandbox Code Playgroud)

r rcpp

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

Rcpp_eval 在传递未计算的参数时导致段错误

我想评估 Rcpp 函数内的变量

SEXP foo(SEXP arg) {
  SEXP x = NULL;
  try {
    x = Rcpp_eval(arg, Environment::global_env());
  } catch(...) {
    printf("Error\n");   
  }
  return x;
}
Run Code Online (Sandbox Code Playgroud)

如果arg初始化的话.GlobalEnv似乎没问题。

x <- 1
foo(substitute(x))
Run Code Online (Sandbox Code Playgroud)

但是如果arg没有初始化.GlobalEnv就会出现segfault

foo(substitute(y))
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?还是有问题Rcpp

r rcpp

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

OpenMP 实现的归约

我需要实现归约操作(对于每个线程,值应该存储在不同的数组条目中)。但是,对于更多线程,它运行得更慢。有什么建议?

double local_sum[16];.
//Initializations....
#pragma omp parallel for shared(h,n,a) private(x, thread_id) 
for (i = 1; i < n; i++) {
    thread_id = omp_get_thread_num();
    x = a  + i* h;
    local_sum[thread_id] += f(x);
}
Run Code Online (Sandbox Code Playgroud)

c openmp

0
推荐指数
1
解决办法
884
查看次数