필자는 R에 data.frame을 가지고 있습니다. 많은 데이터 (125 개 배열의 유전자 발현 수준)가 있습니다. 파이썬에서 데이터를 사용하고 싶습니다. R의 무능함과 30 분짜리 일이라고 생각합니다.rpy2 : data.frame을 numpy 배열로 변환
다음 코드를 사용하고 싶습니다. 이 코드를 이해하려면 변수 path
에로드 할 때 immgen
이라는 변수가있는 데이터 세트의 전체 경로가 포함되어 있는지 확인하십시오. immgen
이 개체 (Bioconductor ExpressionSet
개체)이고 exprs(immgen)
이 125 개의 열 (실험) 및 수만 개의 행 (유전자라고 함)이있는 데이터 프레임을 반환한다는 것을 알고 있습니다.
import numpy as np
import rpy2.robjects as robjects
# ... some code to build path
robjects.r("load('%s')"%path) # loads immgen
e = robjects.r['data.frame']("exprs(immgen)")
expression_data = np.array(e)
이 코드를 실행 (이 분명하지 않다 이런 경우에,이 R 코드를 호출하는 robjects.r를 사용하여 파이썬 코드입니다)하지만, expression_data
은 단순히 array([[1]])
입니다. 다시 누가 알
In [40]: e._get_ncol()
Out[40]: 1
In [41]: e._get_nrow()
Out[41]: 1
그러나 :
나는 때문에 같은 것들에 e
가 exprs()
에 의해 생성 된 데이터 프레임을 표시하지 않음을 확신? e
이 내 data.frame을 대표한다고해도 어레이로 바로 변환되지 않는다는 것은 충분히 공정 할 것입니다. 데이터 프레임에는 배열 (rownames 및 colnames)보다 더 많은 내용이 포함되어있어서 삶이 이렇게 쉬워서는 안됩니다 . 그러나 나는 아직도 변환을 수행하는 방법을 찾을 수 없다. 문서의 표제에 대한 나의 제한된 이해가 이것이 가능해야 함을 암시하지만, 문서는 저에게 너무 간결합니다.
누구든지 어떤 생각을하고 있습니까?
아하 네 말이 맞아. 매트릭스 야. 훌륭해, 고마워. 해결책은 분명해. 나는 할 수있어. e = np .array (robjects.r ('exprs (immgen)')) 이제 e는 내 부동 소수점 숫자가 모두 포함 된 숫자 배열입니다. 감사합니다. Laurent! 저는 bioC rpy2에 관심이 있지만 가져올 수 없습니다. 지원 목록에 대한 질문은 아마도 ... –