R 패키지 2를 호출하여 R 패키지 MatchIt을 호출하려고합니다. $ match.matrix에서 일치하는 쌍의 결과를 보는 데 어려움을 겪고 있습니다. 다음은 Python으로 실행하려고하는 R 코드입니다.rpy2로 파이썬에서 R 함수를 호출 할 때 문제가 발생했습니다.
,691 :lalonde.rx[foo.rx2('match.matrix'),"re78"].
가의 오류를 반환
lalonde.rx(base.row_names(foo.rx2('match.matrix')),
"re78")
하지만,이 덩어리 :
이import readline
import rpy2.robjects
from rpy2.robjects.packages import importr
from rpy2.robjects import pandas2ri
from rpy2 import robjects as ro
import numpy as np
from scipy.stats import ttest_ind
import pandas as pd
from pandas import Series,DataFrame
pandas2ri.activate()
R = ro.r
MatchIt = importr('MatchIt')
base = importr('base')
df = R('lalonde')
lalonde = pandas2ri.py2ri(df)
formula = 'treat ~ age + educ + black + hispan + married + nodegree + re74 + re75'
foo = MatchIt.matchit(formula = R(formula),
data = lalonde,
method = R('"nearest"'),
ratio = 1)
matched = \
base.cbind(lalonde.rx[base.row_names(foo.rx2('match.matrix')),"re78"],
lalonde.rx[foo.rx2('match.matrix'),"re78"])
이 덩어리가 실행 : 여기
matched <- cbind(lalonde[row.names(foo$match.matrix),"re78"],lalonde[foo$match.matrix,"re78"])
내 파이썬 코드 363,210
ValueError: The first parameter must be a tuple.
cbind(lalonde[row.names(foo$match.matrix),"re78"], lalonde[foo$match.matrix,"re78"])
의 출력
'파생 foo' : 그
match.matrix
의 첫 번째 열에는lalonde
에 인덱스 (행 번호)를 포함하기 때문에, 당신이 원하는 무엇을해야 다음? 그리고 그들은 어떤 유형의 물건입니까?귀하의 코드에는 할당이 표시되지 않습니다 – Parfait
lalonde는 MatchIt 문서에서 사용되는 데이터 프레임입니다. foo는 matchit() 함수의 출력입니다. foo $ match.matrix는 다음과 같습니다. n1 × 비율 행렬 - 행 이름은 처리 단위의 이름을 나타냅니다 (데이터에 지정된 데이터 프레임의 행 이름과 일치). - 각 열에는 해당 행 단위의 치료 단위와 일치하는 제어 단위의 이름이 저장됩니다. 예를 들어, 가장 가까운 이웃에 대한 비율 입력 또는 최적 일치가 3으로 지정되면 match.matrix의 세 열은 을 나타내며 세 개의 컨트롤 단위는 하나의 처리 단위와 일치합니다. – clfrazier
'lalonde' 데이터 프레임을 먼저로드해야합니다 (PDF 매뉴얼 10 페이지 참조). 'MatchIt.data (lalonde)'를 사용해보십시오. 재미있는 파이썬은이 비 한정적이고 할당되지 않은 객체에 대해 불평하지 않았습니다. – Parfait