我想替换方程中的符号,并简化R中的方程。
数据:
num_names <- c("num_a","num_aa","num_aaa","num_b")
num_values <- c(1,2,3,4)
df <- data.frame(id=c(1:3),
equation=c("2*x_a*num_a","num_a*(num_aa+1)^2","num_aaa+num_b*x_b"),
stringsAsFactors = F)
df
id equation
1 1 2*x_a*num_a
2 2 num_a*(num_aa+1)^2
3 3 num_aaa+num_b*x_b
预期产出:
id equation
1 1 2*x_a
2 2 9
3 3 3+4*x_b
2条答案
按热度按时间fzsnzjdm1#
试试这个:
不是最优雅的,但它在这里工作得很好。
完美地用符号方式执行此操作的一个问题是,有些对象存在(由
num_*
变量引用,而不是真正的符号查找的首选格式),有些则不存在。我不知道有什么方法可以只计算部分方程而不遇到"未找到"错误。eqqqjvef2#
我们使用polynom包将字符串转换为多项式类对象,然后转换为字符串。
e
是转换为R表达式的方程,L
是变量值的列表,变量名为变量名。我们还包括polynomial()
,变量名保存在xname
中(这是e
或dummy
中唯一未定义的变量,如果没有)转换为L
。然后根据L
计算e
,并将其转换为字符。polynomial
总是得到名称x
,所以在最后我们用xname
替换x
。给予