如何在R中的方程中求出特定变量的系数?

mgdq6dx1  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(132)

例如,我有一个字符串“2 * a + 3 * B”。
我已经有了一些东西来检查表达式中是否存在某个变量,比如我输入了b,我怎么才能让它返回3呢?

kcwpcxri

kcwpcxri1#

**1)**如果我们知道公式是线性的,就像问题中的例子一样,那么我们可以求导数。

# inputs
s <- "2 * a + 3 * b"
var <- "b"

D(parse(text = s), var)
## [1] 3

**2)**如果另外没有常数项--在问题的例子中没有常数项--那么我们可以将所有变量替换为0,除了我们想要其系数的变量,并将其替换为1。然后计算表达式。假设我们有相同的输入

p <- parse(text = s)
L <- Map(function(x) 0, all.vars(p))   # list(a = 0, b = 0)
eval(p, replace(L, var, 1))
## [1] 3
gcxthw6b

gcxthw6b2#

如果你有一个字符串,并且想看到紧接在b之前的d igit(s),那么你可以使用str_extract

library(stringr)
str_extract(x, "\\d+(?=b)")
[1] "3"

这是通过前瞻(?=b)来实现的,它要求要提取的数字后面必须跟字符b。如果需要数字格式的提取子字符串:

as.numeric(str_extract(x, "\\d+(?=b)"))

数据来源:

x <- "2a+3b"

相关问题