2 回答
TA贡献1853条经验 获得超9个赞
当obs变大时,创建R数据帧并将其附加会导致性能问题。解决此问题的一种方法是在Python中“转置”结果。
# "transpose" the data structure in Python
from collections import defaultdict
d = defaultdict(list)
for row in obs:
for colname in row:
d[colname].append(row[colname])
# Assuming that all data are floats
# (if not the case a mapping between SQLite3 types and R vector types is needed)
for rpy2.robjects.vectors import FloatVector
for colname in d:
d[colname] = FloatVector(d[colname])
# data frame
from rpy2.robjects import DataFrame
dataf = DataFrame(d)
TA贡献1859条经验 获得超6个赞
我实际上找到了一个答案(这可能不是最有效的,但对我来说是有用的):
在Python中:
df = robjects.DataFrame(obs[0])
for ob in obs[1:]:
df = df.rbind(robjects.DataFrame(ob))
如果有人有更好,更优雅,更有效的解决方案,欢迎他/她发布。
添加回答
举报