【发布时间】:2019-04-17 00:06:50
【问题描述】:
我目前正在使用 R 中的功能性 MRI 数据,但我需要将其导入 Python 以进行更快的分析。我怎样才能有效地做到这一点?
我目前在 R 中有 198135 个数据帧的列表。它们都有 5 个变量和 84 个大脑区域之间连接的观察结果。我需要在 Python 中显示相同的 198135 个数据帧,以便在那里运行一些特定的分析(具有与 R 中相同的结构:一个对象分别包含所有数据帧)。
最初我尝试从 R 导出一个 .RDS 文件,然后使用“pyreadr”将其导入 Python,但每次尝试使用“pyreadr.read_r()”函数都会得到空对象。
我的另一种方法是将 R 列表的每个数据帧保存为单独的 .csv 文件,然后将它们导入 Python。这样我就可以得到我想要的(我用 100 个数据帧尝试了它,只是为了尝试代码)。这种方法的问题是效率低下且速度慢。
我找到了几个类似问题的答案,但其中大多数是合并所有数据帧并将其作为唯一的 .csv 加载到 Python 中,这不是我需要的解决方案。
在不改变我提到的数据结构的情况下,有没有更有效的方法来完成这个过程?
感谢您的帮助!
# This is the code in R for an example
a <- as.data.frame(cbind(c(1:3), c(1:3), c(4:6), c(7:9)))
b <- as.data.frame(cbind(c(11:13), c(21:23), c(64:66), c(77:79)))
c <- as.data.frame(cbind(c(31:33), c(61:63), c(34:36), c(57:59)))
d <- as.data.frame(cbind(c(12:14), c(13:15), c(54:56), c(67:69)))
e <- as.data.frame(cbind(c(31:33), c(51:53), c(54:56), c(37:39)))
somelist_of_df <- list(a,b,c,d,e)
saveRDS(somelist_of_df, "somefile.rds")
## This is the function I used from pyreadr in Python
import pyreadr
results = pyreadr.read_r('/somepath/somefile.rds')
【问题讨论】:
-
您可以查看feather package,它适用于 python 和 R,并且比 csv 快得多并保留列类型。