loess
このデータファイルで Python の Rpy2 経由で R 関数を呼び出そうとしています: http://filebin.ca/azuz9Piv0z8/test.data
データのサブセット (最初の 1000 ポイント) を使用すると機能しますが、ファイル全体を使用しようとするとエラーが発生します。私のコード:
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
。エラーが発生します:
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 インターフェイスの問題なのかわかりません。ありがとう。