问题标签 [ropensci]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 无论端口打开/关闭,启动 RSelenium 浏览器
问题:是否有一个功能可以在没有打开 selenium 浏览器的情况下打开,或者关闭当前浏览器并重置端口并重新启动浏览器?
理由:我在 RSelenium 中使用偶尔会崩溃的大循环,所以有时我不知道在循环代码中端口是否打开或浏览器是否打开。我想要一个 RSelenium 启动器,它可以启动浏览器,无论浏览器是否打开或端口是否正在使用。
尝试:我用 tryCatch() 尝试了这种方法,但如果我尝试启动它两次,我仍然会收到端口打开的 wdman 错误:
如果我尝试两次,我会收到此错误:
谢谢!
r - subcomponent(mode = "in") 用于多个源顶点
问题
在R 包中,是否有可以处理多个源顶点igraph
的有效实现和/或 BFS?subcomponent()
动机
drake
R 包将用户的工作流建模为相互依赖的对象和文件的 DAG。DAG 应该只包含用户的目标及其上游依赖项,因此drake
用于igraph::subcomponent()
消除多余的顶点。这种方法效率低下,因为v
参数必须是单个顶点,因此drake
最终会为用户想要构建的每个目标执行新的 BFS。
编辑:2019-01-10
drake
现在使用一种不同的方法,最终依赖于对adjacent_vertices()
. 该方法很笨拙,但速度提升实际上相当不错。仍然坚持更优雅和精致的东西。
r - 锁定环境但不锁定 .Random.seed
是否可以锁定全局环境并仍然允许.Random.seed
设置或删除?的默认行为lockEnvironment()
对于我的用例来说过于激进。
背景
drake
7.0.0 版将有一个新的保障措施来保护再现性。
错误来自对 的调用data(mtcars)
。构建的行为x
本身就会改变x
's 的依赖关系。没有护栏,工作流程就会自行失效。
但是有了护栏,我们会遇到像https://github.com/ropensci/drake/issues/749和https://github.com/ropensci/drake/issues/675#issuecomment-458222414这样的边缘案例。
r - 等待 rgbif 下载完成后再继续
我正在 R Shiny 中开发一个小型应用程序。部分应用程序需要查询 GBIF 以下载物种出现数据。这可以使用rgbif
. 该功能rgbif::occ_download()
将下载数据并rgbif::occ_download_meta()
检查 GBIF 是否满足您的要求。例如:
到目前为止,一切都很好。但是,在完成之前(当 Status = SUCCEEDED 时),以下函数rgbif::occ_download_get()
无法下载用于下游分析的数据。occ_download_meta(res)
如何让会话等到从 GBIF 下载完成?我无法将等待时间硬编码到脚本中,因为不同大小的范围将花费 GBIF 更长或更短的时间来处理。此外,查询服务的其他活动用户的数量也可能会改变等待时间。因此,在继续之前,我需要某种状态 == 成功的标志。
我在下面复制了一些带有注释的骨架代码。
r - 切片(原始)向量的更快方法?
问题
我正在寻找一种快速(理想情况下是恒定时间)的方法来在 R 中获取一个长原始向量的大切片。例如:
即使使用 ALTREP,base R 也需要很长时间。
为什么?
因为我想加快速度storr
以加快速度drake
。我想storr
更快地保存长原始向量。writeBin()
速度非常快,但它仍然无法处理超过 2^31 - 1 bytes long 的向量。所以我想将数据保存在可管理的块中,如此处所述。这几乎可以工作,但是创建块太慢了,并且它在内存中复制了太多数据。
想法
让我们创建一个函数
这基本上相当于
在时间和内存上都是 O(1)。理论上,我们需要做的就是
- 传递
obj
给 C 函数。 - 创建一个指向 的第一个字节的新指针
obj
。 - 将新指针递增到切片的开头。
RAWSXP
在具有适当长度(小于 2^31 字节)的新指针处创建一个。- 返回
RAWSXP
.
我有 C 的背景,但我很难完全控制R 的内部结构。我想访问SEXP
s 中的 C 指针,这样我就可以进行基本的指针运算并从未修饰的 C 指针创建已知长度的 R 向量。我在 R 的 C 内部找到的资源似乎没有解释如何包装或解开指针。我们需要Rcpp
这个吗?
下面的粗略草图说明了我正在尝试做的事情。
编辑:一些更多潜在的解决方法
感谢 Dirk 激发了我对此的思考。对于足够小的数据,我们可以使用fst
保存单列数据框,其中列是我们真正关心的原始向量。这种使用fst
比writeBin()
由reprex 包(v0.3.0)于 2019 年 6 月 16 日创建
不幸的是,很难创建具有 2^31 或更多行的数据框。一个技巧是首先将原始向量转换为矩阵,我们避免了通常的整数溢出,因为 (2^31 - 1)^2 字节是几个艾字节。
由reprex 包(v0.3.0)于 2019 年 6 月 16 日创建
我们仍然在尘土中离开saveRDS()
,但我们不再击败writeBin()
。从数据框到矩阵的转换很慢,我不确定它是否能很好地扩展。
由reprex 包(v0.3.0)于 2019 年 6 月 16 日创建
如果像 Dirk 建议的那样,我们可以使用 anR_xlen_t
来索引数据框的行,我们也许可以避免转换任何内容。
r - 如何创建计划目标以交叉先前地图目标的结果和新变量?
从a
使用 map 创建的多个目标 ( ) 中,我有 2 个其他目标 (b
和d
) 迭代第一个目标。现在我想在另一个目标中使用这些目标的结果。此外,我想与另一个变量 ( model
) 交叉。
我在下面粘贴了一个代表,但在我的情况下,对于某些上下文,a
描述数据集的不同子集,b
并d
预先计算一些东西,e
使用预先计算的数据在每个子集上应用不同的模型。
我尝试了不同的组合map
cross
(如下e
所示)但没有成功。我试图在 fn4 中添加我想要使用的所有目标名称,但它会创建不必要的交叉。
由reprex 包(v0.3.0)于 2019-07-15 创建
它似乎有效,但arg1
andarg2
没有被延续,并且不能用于fn4
和跟随目标。我应该把这一步分成两步吗,如果是的话怎么做?(map
然后cross
,cross
然后map
?)我尝试过早点,之后a
,但我不会重新计算相同b
和d
多次,这可能需要大量时间和内存。
编辑:一个更现实的例子
因为许多目标使用需要保存为run
函数文件的相同数据(调用外部二进制文件),所以为了防止多次重新计算相同的东西并将相同的东西多次保存在不同的文件中(taht 可以是巨大的)我在德雷克分离了所有这些任务。
由reprex 包(v0.3.0)于 2019-07-15 创建
编辑2:
我现在使用.data
具有先前目标名称的数据框(使用rlang::syms
)在地图转换中使用该参数,它工作正常,但它不适用于drake::drake_plan
'smax_expand
参数。这个解决方案也不是最优的,因为制作一个网格.data
非常冗长。
r - 使用 {data.table} 自定义 {drake} 计划
我的目标是定制 {drake} 计划,以减少简单和复杂情况下的代码重复,例如,drake::trigger
根据计划的特定条件设置多个目标(即通过检测目标名称以编程方式识别要设置的目标)在查询 Web API 或其他更复杂的情况时以 (data) _raw 结尾)。为简洁起见,此处未显示 * 以编程方式识别目标的各个方面,下面的代码仅使用手动输入的列名称。我更喜欢使用 {data.table} 来操作计划,而不是 {dplyr}。
例如,有没有办法drake::trigger
为多个目标设置?还是有更好的方法来完成工作?
我在下面提出了一个简单的解决方案,即使用熟悉的data.frame 样式方法手动操作 drake 计划。简化版的 reprex
由reprex 包(v0.3.0)于 2019 年 12 月 6 日创建
my_plan $command的名称是必需的吗?{drake} 在内部使用它们吗?我有三个选项,我应该选择哪些选项?
- 忽视
names(my_plan$command) <- my_plan$target
- 保存
command_names <- names(my_plan$command)
并重新设置(像这样)
r - 'qualtRics' R 包 API 调用返回“端口 443:连接被拒绝”。我错过了什么?
下午好!
我是一名自学成才的 R 开发人员,所以我可能没有使用正确的术语,但请多多包涵。
我编写了一个脚本来清理和处理从 Qualtrics 手动导出的数据,但是我想通过直接进入 Qualtrics API 来进一步自动化我的数据处理工作流程。我正在尝试使用 qualtRics 包来处理 API 调用,但是当我执行该函数时,我得到端口 443 的返回:连接被拒绝。我还没有找到一个可行的解决方案。我遵循了下面的标准工作流程代码:
对于 all_surveys() 和 fetch_survey() 函数,如果我使用 https:// 我会得到:
“curl::curl_fetch_memory(url, handle = handle) 中的错误:无法连接到端口 443:连接被拒绝”
如果我使用 http:// 返回:
“curl::curl_fetch_memory(url, handle = handle) 中的错误:无法连接到端口 80:连接被拒绝”
是否有解决方法或不同的方法可以通过 API 将 Qualtrics 调查数据提取到数据框中?
此致
openstreetmap - 按路线类型提取 Open Street Map 方式 ID 的交叉口计数
编辑添加了额外的细节
我有 2,061 个开放街道地图 ( OSM ) 路段的 shapefile。我的 shapefile 中的每个段都由其 OSM Way ID 标识。
这是我的数据中五个段的示例:
对于这 2061 个路段中的每一个路段,我想分别计算每种道路类型(住宅、主要、第三...)与其他道路的交叉口数量。
例如,这条 OSM 路与其他 27 条路相交,其中 11 条为“住宅”,其中 3 条为“二级”高速公路。
这是次要的分析,但最终,对于多种类型道路连接的交叉口,我将选择“最大”类型的道路。例如,该节点连接了一条服务道路和一条住宅道路;我想选择住宅道路道路。我想我可以为此创建自己的层次结构列表并在以后处理它。
我正在尝试使用 R Open Sci 包osmdata
到目前为止,我可以使用 osmdata 到达#2(信号交叉口):
这表明沿着这个 OSM 段有三个交通信号。(尽管实际上只有两个信号交叉口——两个信号与分开的高速公路相关联……但这可能是另一个问题)。
我是 R 本地人,这就是 osmdata 包对我如此有吸引力的原因,但我愿意探索 Overpass API 中的查询。TBH 我发现关于如何在网站上获取交叉节点的示例不太适用——而且我不清楚如何将此过程扩展到我拥有的 2000 多个方式 ID 的长列表(但如果文档或存在示例,请指出它)。
我也愿意探索 Python 中的其他工具库;Python osmnx 包似乎具有用于计算“交叉点密度”的优秀工具,但对于指定的多边形,如城市边界,并且似乎没有通过方式或节点 ID 在 Python 中创建调用的功能。
我也知道我可能可以在 ArcGIS 或 QGIS 中执行此操作,但是因为我的数据库中已经有了这些 OSM ID,所以为大都市地区加载一个完整的交叉路口形状文件并做一些事情似乎是一种浪费缓冲过程以获取我需要的信息。另外,如果我有一个方便的脚本来通过方式或节点 ID 提取一些信息,我可以更轻松地扩展我提取的数据类型,以获取为 OSM 元素记录的其他重要信息的花絮。
感谢空间数据社区!