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

R语言:将数据框字符串列转为公式并计算结果的异常问题

解决数据框字符串公式批量计算问题

问题原因

直接用eval()批量赋值时,因Python变量作用域或循环变量引用的特性,会导致所有行复用最后一次eval的执行结果。

解决方法

方法1:用pandas.DataFrame.apply()逐行处理

假设数据框为df,所需变量已在当前环境定义,通过apply对每行的Formula列单独执行eval:

import pandas as pd

# 示例变量
x = 2
y = 3

# 示例数据框
df = pd.DataFrame({
    'Formula': ['x + y', 'x * y', 'x**2 + y']
})

# 逐行计算公式结果
df['results'] = df['Formula'].apply(lambda expr: eval(expr))

方法2:手动循环逐行赋值

也可通过遍历数据框行,逐个计算并赋值:

df['results'] = 0  # 初始化结果列
for idx, row in df.iterrows():
    df.loc[idx, 'results'] = eval(row['Formula'])

额外注意

  • 若变量不在全局作用域,可通过字典传入自定义环境,避免作用域问题:
    vars_dict = {'x': 2, 'y': 3}
    df['results'] = df['Formula'].apply(lambda expr: eval(expr, vars_dict))
    
  • 请勿用eval()处理不可信来源的字符串公式,存在代码注入风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:52:02