所以我试图从NFLfastR获取数据,我的R等价代码是:
data <- readRDS(url('https://raw.githubusercontent.com/guga31bb/nflfastR-data/master/data/play_by_play_2019.rds'))
data
我以前也尝试过pyreadr模块,但对我来说不起作用。目前我正在使用rpy2模块使其工作。以下是我正在尝试的代码:
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
import os
os.environ["R_HOME"] = r"C:\Program Files\R\R-3.6.3"
os.environ["PATH"] = r"C:\Program Files\R\R-3.6.3\bin\x64" + ";" + os.environ["PATH"]
pandas2ri.activate()
readRDS = robjects.r['readRDS']
df = readRDS(url('https://raw.githubusercontent.com/guga31bb/nflfastR-data/master/data/play_by_play_2019.rds'))
df = pandas2ri.ri2py(df)
Rds和Rdata文件很难以R以外的其他语言读取,尽管open没有文档记录。因此,关于如何在python中读取它们,没有太多选项。一个是你的建议。另一种方法是使用pyreadr,但您必须先将文件下载到磁盘,因为pyreadr无法直接从url读取:
编辑
pyreadr 0.3.7现在包括下载文件的功能:
在R中,与Python不同,您不必使用其包源限定每个函数,除非您面临名称冲突。此外,在R中,没有内置的方法。您调用的每个函数都驻留在一个包中。但是R附带了默认包,例如
utils
、base
、stats
用于例程方法具体来说,您的工作R代码从
base
包调用两个函数,如双冒号别名所示:因此,您需要通过显式导入
base
包在Python的rpy2
中运行类似过程:如果您只想读取nflFastR数据,可以直接在python中读取,如下所示:
但到目前为止,还没有通过python实现这一点的方法。从url读取时读取本地(.rds)文件已经够难了,这是我从未见过的实现。因此,您必须在本地下载该文件,然后您可以使用您提到的pyreadr包或rpy2(如果您安装了R)直接读取该文件
相关问题 更多 >
编程相关推荐