You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在rpy2中将数据框的数据类型赋值给变量?

在rpy2中获取DataFrame数据类型并赋值变量的方法

你遇到的RParsingError是因为直接在rpy2中写R风格的赋值语句不符合rpy2的代码执行规范,同时str(df)在R中主要用于打印数据结构,并不会返回类似Pythondf.dtypes的类型结果。下面是两种正确的实现方式:

方式1:调用R原生函数获取列类型

对应Python中df.dtypes的需求,在R里可以用sapply(df, class)或sapply(df, typeof)获取每列的数据类型,在rpy2中这样实现:

from rpy2.robjects import r, pandas2ri

# 若你的df是Pandas DataFrame,先转换为R的DataFrame
pandas2ri.activate()
r_df = pandas2ri.py2rpy(df)

# 获取每列类型并赋值给dt
dt = r['sapply'](r_df, r['class'])
# 或用typeof获取更底层的类型:dt = r['sapply'](r_df, r['typeof'])

# 打印结果
print(dt)

方式2:通过rpy2执行R代码块

如果你习惯写R代码,可以用rpy2的R()对象执行完整R代码片段:

from rpy2.robjects import R, pandas2ri

pandas2ri.activate()
r_df = pandas2ri.py2rpy(df)

# 将R DataFrame传入R环境
r = R()
r.assign("df", r_df)

# 执行R代码获取类型
r('dt <- sapply(df, class)')

# 从R环境取出变量dt
dt = r['dt']
print(dt)

错误原因说明

你之前写的dt <- str(df)会报错,一是因为在rpy2中直接传入这类赋值语句需要用R()对象执行,二是str(df)在R中仅用于打印数据结构信息,返回值为NULL,无法得到你需要的每列类型数据。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:29:59