2015-08-27 5 views
4

У меня есть номер saved R datasets (хотя у них есть расширения .R). Я могу получить доступ к одной из этих матриц fname.R с R, используя load("fname.R"), а затем ввести имя файла fname.Как получить доступ к матрице в файле .Rdata в Python с помощью rpy2

Однако, я хотел бы использовать эту матрицу в Python. Я мог бы использовать rpy2 для импорта данных, но я также заинтересован в манипулировании этими данными. Как я могу превратить его в матрицу Python?

+0

Это может помочь: http://stackoverflow.com/questions/21288133/loading-rdata-files-into-python –

+0

Какие переменные хранятся в этих файлах (т. Е. Переменные 'fname?)? Кадры данных? Векторы? Списки? Что-то другое? То, как вы к ним подходите, будет зависеть от типа данных. Также обратите внимание, что, хотя они, по-видимому, были сохранены в R, более типично сохранять их как «.rda» или «.RData» (расширение не имеет значения, но знание соглашения поможет вам в решении Googling для решений) –

+0

@DavidRobinson Они смотрят на меня как на 5000 матриц, каждая из которых имеет 25 значений. – ShanZhengYang

ответ

5

Вы можете найти решение в двух других вопросах/ответах по переполнению стека: this shows how to load a variable from an RData file и this shows how to convert an R matrix to a numpy array.

Комбинированное решение выглядит следующим образом:

import rpy2.robjects as robjects 
import numpy as np 

# load your file 
robjects.r['load']('fname.RData') 

# retrieve the matrix that was loaded from the file 
matrix = robjects.r['fname'] 

# turn the R matrix into a numpy array 
a = np.array(matrix) 

print a 

Например, если бы вы начали, выполнив следующий код в R:

fname <- matrix(1:9, nrow = 3) 
save(fname, file = "fname.RData") 

Приведенный выше код Python напечатает:

[[1 4 7] 
[2 5 8] 
[3 6 9]]