如何从全局管理区域添加多边形,以便可以单击它们.
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)
有办法吗?或者我做错了什么?
是否有任何方法可以访问由指定为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中装饰器的问题.
我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) 有没有办法识别特定提交的"附带"提交(编辑相同行并将导致冲突的提交)?
一个非常简单的例子
$ 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) 我需要捕捉的错误Rf_eval中C.这甚至可能吗?
一些样本功能
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_eval从Rcpp和Rcpp11,但他们都没有为我的情况下工作,我需要调用Rf_eval直接.是否有可能直接在C中捕获错误?如果是这样的话?
是否可以迭代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) 我想评估 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?
我需要实现归约操作(对于每个线程,值应该存储在不同的数组条目中)。但是,对于更多线程,它运行得更慢。有什么建议?
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)