将 cos^..(...) 替换为 (cos(...))^

标签 r string

我通过 R 运行 WolframAlpha Wolfram Alpha API from R

我的问题是,我需要将 wolfram 输出转换为 R 表达式。 我在需要的地方添加了“*”,还有另一个问题 - 测角函数的转换。

例子:

我有: cos^3(5 + 2*x)

我需要得到: (cos(5 + 2*x))^3

有人可以提示我如何实现表达式吗?或者有什么转换包吗?或者有人建议任何其他方式吗?

解决方案 @G。格洛腾迪克

sub("(sin|cos|tan)\\^(\\(?-?\\d+\\)?)", "(function(x) \\1(x)^\\2)", 'cos^3(5 + 2*x)')

最佳答案

定义一个名为 cos^3 的函数,在其周围的原始字符串中插入反引号并求值。

`cos^3` <- function(x) cos(x)^3
s <- sub("cos^3", "`cos^3`", input_string, fixed = TRUE)  # `cos^3`(5 + 2*x)

x <- .5  # test value for x
eval(parse(text = s))
## [1] 0.8852069

如果需要的话,这可以概括一点:

input_string <- "cos^(3)(5+2*x)"
sub("(sin|cos|tan)\\^(\\(?-?\\d+\\)?)", "(function(x) \\1(x)^\\2)", input_string)
## [1] "(function(x) cos(x)^(3))(5+2*x)"

关于将 cos^..(...) 替换为 (cos(...))^,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54271324/

相关文章:

string - 为什么我在字符串中得到不同的类型?

r - 如何在rarecurve(纯素包)中单独为线条着色

RJDBC:类中的错误(obj)<- "rs.scalar":无法在符号上设置属性

r - 查找开始和结束位置/运行索引/连续值

python - 将不存在的路径分配给字符串时出现类型错误

java - Google Foobar,字符串清理,测试失败 5

python - 删除巨大的 csv 中已知的确切行

r - R corrplot 中的标题太不居中且太高

C++ std::vector<std::string> 迭代器段错误

string - 如何定义函数以在 Python 3 中将字符串作为输入