Пропустить значения NA из prcomp () в rpy2? - PullRequest
0 голосов
/ 01 марта 2012
import numpy
import rpy2
from rpy2 import robjects
import rpy2.robjects.numpy2ri
from rpy2.robjects.packages import importr
stats = importr('stats')
r = robjects.r
rpy2.robjects.numpy2ri.activate()

a = numpy.array( [ [1, 5, numpy.nan, 4, 5], [2, 6, 8, 7, 8] ] )
b = numpy.array( [ [1, 5, 8, 4, 5], [2, 6, 8, 7, 8] ] )

std = r.sd( a[0], **{'na.rm': 'TRUE'} )              # works fine
pca = stats.prcomp( b )                              # works fine
pca = stats.prcomp( a )                              # error
pca = stats.prcomp( a, **{'na.rm': 'TRUE'} )         # error
pca = stats.prcomp( a, **{'na.action': 'na.omit'} )  # error

Последние три вызова prcomp () дают мне эту ошибку:

Error in svd(x, nu = 0) : infinite or missing values in 'x'

У меня есть группа Google, я не могу понять, как правильно использовать na.action (или другие средства) для обработки значений NA в prcomp () через rpy2. Я надеюсь, что это просто проблема синтаксиса.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 07 марта 2012

«na.action» должно быть функцией, а не строкой с именем функции.Следующие действия могут помочь:

pca = stats.prcomp( a, **{'na.action': stats.na_omit} )

Обратите внимание, что NA! = NaN.Из вашего примера:

ar = robjects.vectors.Matrix(a)

print(ar)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5  NaN    4    5
[2,]    2    6    8    7    8
...