使用 rpy2 将 NULL 从 Python 转换为 R
Convert NULL from Python to R using rpy2
在 R 中通常使用 NULL
值作为默认值。使用 Python 和 RPy2,如何明确提供 NULL
参数?
None
不可转换(NotImplementedError
),字符串'NULL'只会被转换成字符串,执行时会出错。
以使用 tsintermittent
包为例:
import numpy as np
from rpy2.robjects.packages import importr
from rpy2.robjects import numpy2ri
numpy2ri.activate()
tsintermittent = importr('tsintermittent')
crost = tsintermittent.crost
ts = np.random.randint(0,2,50) * np.random.randint(1,10,50)
# implicit ok, default w is NULL
# crost(ts)
# explicit - how to do it?
# RRunTimeError - non numeric argument
crost(ts, w='NULL')
# NotImplementedError
crost(ts, w=None)
问题可能是由于 NULL
中的引号引起的。无法用 rpy2
检查(因为有安装问题)。下面是与 pyper
一起使用的代码
from pyper import *
import numpy as np
r=R(use_pandas=True)
ts = np.random.randint(0,2,50) * np.random.randint(1,10,50)
r('library(tsintermittent)')
r.assign('ts1', ts)
r('out <- crost(ts1, w = NULL)')
out1 = r.get('out')
out1.keys()
#['frc.out', 'initial', 'weights', 'components', 'model', 'frc.in']
无法用 rpy2
测试问题。可能反引号是一个选项,可以按原样阅读它
crost(ts, w = `NULL`)
您可以使用 r
对象导入 as.null
,然后调用该函数。例如:
from rpy2.robjects import r
as_null = r['as.null']
is_null = r['is.null']
print(is_null(as_null())) #prints TRUE
我没有尝试你的代码,因为它的所有依赖项,但如果 as_null
定义如上,你应该可以使用
crost(ts, w=as_null())
或者,使用直接来自robjects
的NULL
对象定义:
import rpy2.robjects as robj
print(is_null(robj.NULL)) #prints TRUE
在 R 中通常使用 NULL
值作为默认值。使用 Python 和 RPy2,如何明确提供 NULL
参数?
None
不可转换(NotImplementedError
),字符串'NULL'只会被转换成字符串,执行时会出错。
以使用 tsintermittent
包为例:
import numpy as np
from rpy2.robjects.packages import importr
from rpy2.robjects import numpy2ri
numpy2ri.activate()
tsintermittent = importr('tsintermittent')
crost = tsintermittent.crost
ts = np.random.randint(0,2,50) * np.random.randint(1,10,50)
# implicit ok, default w is NULL
# crost(ts)
# explicit - how to do it?
# RRunTimeError - non numeric argument
crost(ts, w='NULL')
# NotImplementedError
crost(ts, w=None)
问题可能是由于 NULL
中的引号引起的。无法用 rpy2
检查(因为有安装问题)。下面是与 pyper
from pyper import *
import numpy as np
r=R(use_pandas=True)
ts = np.random.randint(0,2,50) * np.random.randint(1,10,50)
r('library(tsintermittent)')
r.assign('ts1', ts)
r('out <- crost(ts1, w = NULL)')
out1 = r.get('out')
out1.keys()
#['frc.out', 'initial', 'weights', 'components', 'model', 'frc.in']
无法用 rpy2
测试问题。可能反引号是一个选项,可以按原样阅读它
crost(ts, w = `NULL`)
您可以使用 r
对象导入 as.null
,然后调用该函数。例如:
from rpy2.robjects import r
as_null = r['as.null']
is_null = r['is.null']
print(is_null(as_null())) #prints TRUE
我没有尝试你的代码,因为它的所有依赖项,但如果 as_null
定义如上,你应该可以使用
crost(ts, w=as_null())
或者,使用直接来自robjects
的NULL
对象定义:
import rpy2.robjects as robj
print(is_null(robj.NULL)) #prints TRUE