使用NA和data.table将R数据导入Python问题

2024-06-26 14:15:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将使用saveRDS保存的R中的data.table导入python。我在python pyreadr中找到了工作正常的包,但是对于我丢失的一些data.table来说,它不起作用。我找不到类似的问题,而且我对python还很陌生

MWE将在R中创建一些数据

library(data.table)    
df<-data.table(Name="Heilbronn", lon=9.208, lat=49.124, type=c(NA, "bus_station"), north=c(NA, 4.5))
saveRDS(df,"test_dt.r")
saveRDS(na.omit(df),"test_dt_naomit.r")
df<-data.frame(Name="Heilbronn", lon=9.208, lat=49.124, type=c(NA, "bus_station"), north=c(NA, 4.5))
saveRDS(df,"test_df.r")

然后我试着用python阅读这篇文章

import pyreadr
pyreadr.read_r("test_dt.r")

不工作,我得到以下错误

Traceback (most recent call last):

  File "<ipython-input-57-383514f95bcb>", line 1, in <module>
    result = pyreadr.read_r("../test.r")

  File "C:\ProgramData\Anaconda3\lib\site-packages\pyreadr\pyreadr.py", line 47, in read_r
    parser.parse(path)

  File "pyreadr\librdata.pyx", line 117, in pyreadr.librdata.Parser.parse

  File "pyreadr\librdata.pyx", line 142, in pyreadr.librdata.Parser.parse

LibrdataError: Unable to allocate memory

下面这两项工作是我假设的,因为在第一种情况下,没有NA,而在第二种情况下,它只是一个data.frame

pyreadr.read_r("test_dt_naomit.r")
pyreadr.read_r("test_df.r")

Tags: nameintestdfreaddataparseline