例如,我有一个字符串“2 * a + 3 * B”。我已经有了一些东西来检查表达式中是否存在某个变量,比如我输入了b,我怎么才能让它返回3呢?
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
gcxthw6b2#
如果你有一个字符串,并且想看到紧接在b之前的d igit(s),那么你可以使用str_extract:
b
d
str_extract
library(stringr) str_extract(x, "\\d+(?=b)") [1] "3"
这是通过前瞻(?=b)来实现的,它要求要提取的数字后面必须跟字符b。如果需要数字格式的提取子字符串:
(?=b)
as.numeric(str_extract(x, "\\d+(?=b)"))
数据来源:
x <- "2a+3b"
2条答案
按热度按时间kcwpcxri1#
**1)**如果我们知道公式是线性的,就像问题中的例子一样,那么我们可以求导数。
**2)**如果另外没有常数项--在问题的例子中没有常数项--那么我们可以将所有变量替换为0,除了我们想要其系数的变量,并将其替换为1。然后计算表达式。假设我们有相同的输入
gcxthw6b2#
如果你有一个字符串,并且想看到紧接在
b
之前的d
igit(s),那么你可以使用str_extract
:这是通过前瞻
(?=b)
来实现的,它要求要提取的数字后面必须跟字符b
。如果需要数字格式的提取子字符串:数据来源: