- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
import rpy2.robjects as robjects
dffunc = sc.parallelize([(0,robjects.r.rnorm),(1,robjects.r.runif)])
dffunc.collect()
输出
[(0, <rpy2.rinterface.SexpClosure - Python:0x7f2ecfc28618 / R:0x26abd18>), (1, <rpy2.rinterface.SexpClosure - Python:0x7f2ecfc283d8 / R:0x26aad28>)]
虽然分区版本导致错误:
dffuncpart = dffunc.partitionBy(2)
dffuncpart.collect()
RuntimeError: ('R cannot evaluate code before being initialized.', <built-in function unserialize>
这个错误似乎是 R
没有加载到其中一个分区上,我认为这意味着没有执行第一个导入步骤。有没有办法解决?
EDIT 1 第二个例子让我认为 pyspark 或 rpy2 的计时存在错误。
dffunc = sc.parallelize([(0,robjects.r.rnorm), (1,robjects.r.runif)]).partitionBy(2)
def loadmodel(model):
import rpy2.robjects as robjects
return model[1](2)
dffunc.map(loadmodel).collect()
产生相同的错误 R cannot evaluate code before being initialized。
dffuncpickle = sc.parallelize([(0,pickle.dumps(robjects.r.rnorm)),(1,pickle.dumps(robjects.r.runif))]).partitionBy(2)
def loadmodelpickle(model):
import rpy2.robjects as robjects
import pickle
return pickle.loads(model[1])(2)
dffuncpickle.map(loadmodelpickle).collect()
按预期工作。
最佳答案
我想说“这不是 rpy2 中的错误,这是一个功能”,但实际上我不得不承认“这是一个限制”。
发生的事情是 rpy2 有 2 interface levels .一个是低级接口(interface)(更接近 R 的 C API),可通过 rpy2.rinterface
获得,另一个是高级接口(interface),具有更多的花里胡哨、更“pythonic”,并且具有继承自 rinterface
level-ones 的 R 对象的类(最后一部分对于下面关于 pickling 的部分很重要)。导入高级接口(interface)会导致在必要时使用默认参数初始化(启动)嵌入式 R。导入低级接口(interface) rinterface
没有这种副作用,嵌入式 R 的初始化必须显式执行(函数 initr
)。 rpy2 是这样设计的,因为嵌入式 R 的初始化可以有参数:首先导入 rpy2.rinterface
,设置初始化,然后导入 rpy2.robjects
使这成为可能。
除此之外,由 rpy2 包装的 R 对象的序列化(pickling)目前仅定义在 rinterface
级别(参见 documentation)。腌制 robjects
-level(高级)rpy2 对象使用 rinterface
-level 代码,当 unpickling 它们时,它们将保持在较低级别(Python pickle 包含module 对象的类在其中定义并将导入该模块 - 这里 rinterface
,这并不意味着嵌入式 R 的初始化)。事情变成这样的原因很简单,它“现在已经足够好了”:在实现它的时候,我不得不同时想出一种很好的方法来桥接两种不同的语言,并通过 Python C-API 和酸洗/解酸洗 Python 对象。考虑到可以轻松编写类似的东西
import rpy2.robjects
或
import rpy2.rinterface
rpy2.rinterface.initr()
在 unpickling 之前,这从未被重新访问过。我所知道的 rpy2 酸洗的用途是使用 Python 的 multiprocessing
(并在初始化子进程的代码中添加类似于 import 语句的内容是一种廉价且足够的修复方法)。愿现在是时候再看看这个了。如果是的话,请为 rpy2 提交错误报告。
编辑:这无疑是 rpy2 的问题。 pickled robjects
级别的对象应该unpickle回到robjects
级别,而不是rinterface
级别。我开了一个issue in the rpy2 tracker (并且已经在 default/dev 分支中推送了一个基本补丁)。
第二次编辑:该补丁是从版本 2.7.7 开始发布的 rpy2 的一部分(撰写本文时的最新版本是 2.7.8)。
关于python - 如何对包含 R 函数的 pyspark RDD 进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34669751/
我有一个类似于以下的结构。 class A { string title; List bItem; } class B { int pric
本地流 和 远程流 两者都是“媒体流列表 ”。 本地流 包含“本地媒体流 ” 对象 但是,远程流 包含“媒体流 ” 对象 为什么差别这么大? 当我使用“本地流 “- 这个对我有用: localVide
我正在尝试将 8 列虚拟变量转换为 8 级排名的一列。 我试图用这个公式来做到这一点: =IF(OR(A1="1");"1";IF(OR(B1="1");"2";IF(OR(C1="1");"3";I
我正在使用面向对象编程在 Python 中创建一个有点复杂的棋盘游戏的实现。 我的问题是,许多这些对象应该能够与其他对象交互,即使它们不包含在其中。 例如Game是一个对象,其中包含PointTrac
有没有办法获取与 contains 语句匹配的最深元素? 基本上,如果我有嵌套的 div,我想要最后一个元素而不是父元素: Needle $("div:contains('Needle')")
出于某种原因,我无法在 Google 上找到答案!但是使用 SQL contains 函数我怎么能告诉它从字符串的开头开始,即我正在寻找等同于的全文 喜欢 'some_term%'。 我知道我可以使用
我正在尝试创建一个正则表达式来匹配具有 3 个或更多元音的字符串。 我试过这个: [aeiou]{3,} 但它仅在元音按顺序排列时才有效。有什么建议吗? 例如: 塞缪尔 -> 有效 琼 -> 无效 S
嘿所以我遇到了这样的情况,我从数据库中拉回一个客户,并通过包含的方式包含所有案例研究 return (from c in db.Clients.Include("CaseStudies")
如果关键字是子字符串,我无法弄清楚为什么这个函数不返回结果。 const string = 'cake'; const substring = 'cak'; console.log(string.in
我正在尝试将包含特定文本字符串的任何元素更改为红色。在我的示例中,我可以将子元素变为蓝色,但是我编写“替换我”行的方式有些不正确;红色不会发生变化。我注意到“contains”方法通常写为 :cont
我想问一下我是否可以要求/包含一个语法错误的文件,如果不能,则require/include返回一个值,这样我就知道所需/包含的文件存在语法错误并且不能被要求/包含? file.php语法错误 inc
我想为所有包含youtube链接的链接添加一个rel。 这就是我正在使用的东西-但它没有用。有任何想法吗? $('a [href:contains(“youtube.com”)]')。attr('re
我正在尝试在 Elasticsearch 中查询。除搜索中出现“/”外,此功能均正常运行。查询如下所示 GET styling_rules/product_line_filters/_search {
我正在开发名为eBookRepository的ASP.NET MVC应用程序,其中包含在线图书。 电子书具有自己的标题,作者等。因此,现在我正在尝试实现搜索机制。我必须使用Elasticsearch作
我已阅读Firebase Documentation并且不明白什么是 .contains()。 以下是文档中 Firebase 数据库的示例规则: { "rules": { "rooms"
我的问题是我可以给出条件[ 'BookTitleMaster.id' => $xtitid, ] 如下所示 $bbookinfs = $this->BookStockin->BookIssue->fi
我需要能够使用 | 检查模式在他们中。例如,对于像“dtest|test”这样的字符串,像 d*|*t 这样的表达式应该返回 true。 我不是正则表达式英雄,所以我只是尝试了一些事情,例如: Reg
我想创建一个正则表达式来不匹配某些单词... 我的字符:var test = "é123rr;and;ià456;or;456543" 我的正则表达式:test.match(\((?!and)(?!o
我在 XSLT 中有一个名为 variable_name 的变量,如果相关产品具有名称为 A 或 B 或两者均为 A & 的属性,我将尝试将其设置为 1 B.
您好,我想让接待员和经理能够查看工作类型和费率并随后进行更新。但是技术人员只能查看不能更新。该图是否有效? 我读到扩展用例是由发起基本用例的参与者发起的。我应该如何区分技术人员只能启动基本案例而不能启
我是一名优秀的程序员,十分优秀!