首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Python在loess函数中的rpy2 /R问题?

通过Python在loess函数中的rpy2 /R问题?
EN

Stack Overflow用户
提问于 2013-03-22 04:48:04
回答 2查看 1.2K关注 0票数 2

我正在尝试通过Python语言中的Rpy2在这个数据文件上调用R函数loesshttp://filebin.ca/azuz9Piv0z8/test.data

当我使用数据的一个子集(前1000个点)时,它是有效的,但当我尝试使用整个文件时,我得到一个错误。我的代码:

代码语言:javascript
复制
import pandas
from rpy2.robjects import r
import rpy2.robjects as robjects
data = pandas.read_table(os.path.expanduser("~/test2.data"), sep="\t").values
small_data = data[0:1000, :]
print "small data loess:"
a, b = robjects.FloatVector(list(small_data[:, 0])), \
       robjects.FloatVector(list(small_data[:, 1]))
df = robjects.DataFrame({"a": a, "b": b})
loess_fit = r.loess("b ~ a", data=df)
print loess_fit

print "large data loess:"
a, b = robjects.FloatVector(list(data[:, 0])), \
       robjects.FloatVector(list(data[:, 1]))
df = robjects.DataFrame({"a": a, "b": b})
loess_fit = r.loess("b ~ a", data=df)
print loess_fit

适用于small_data,但不适用于data。我得到了错误:

代码语言:javascript
复制
Error in simpleLoess(y, x, w, span, degree, parametric, drop.square, normalize,  : 
  NA/NaN/Inf in foreign function call (arg 1)
    loess_fit = r.loess("b ~ a", data=df)
  File "/usr/local/lib/python2.7/dist-packages/rpy2-2.3.3-py2.7-linux-x86_64.egg/rpy2/robjects/functions.py", line 86, in __call__
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/rpy2-2.3.3-py2.7-linux-x86_64.egg/rpy2/robjects/functions.py", line 35, in __call__
    res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in simpleLoess(y, x, w, span, degree, parametric, drop.square, normalize,  : 
  NA/NaN/Inf in foreign function call (arg 1)

如何解决这个问题?我不确定是R函数loess有问题还是Rpy2接口有问题?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-22 04:58:16

问题在于数据中的-Inf值:

代码语言:javascript
复制
DF <- read.table('http://filebin.ca/azuz9Piv0z8/test.data')
DF[!is.finite(DF[,1]) | !is.finite(DF[,2]),]
#        V1   V2
# 5952 -Inf -Inf
票数 3
EN

Stack Overflow用户

发布于 2013-07-11 00:22:04

既然可以使用statsmodels package in Python for lowess smoothing,为什么还要调用R呢?

还有一个针对lowess的Bio.Statistics包,但它似乎不那么准确,而且我无法让它针对this lowess example收敛。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15557770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档