使用马赛克包中的D函数计算R中的导数

时间:2018-02-13 07:39:06

标签: r

我在R中安装了马赛克包,通过输入install.packages(' mosaic')来计算派生。我使用makeFun创建了一个函数,然后我尝试按以下方式计算导数

y1 <- makeFun(a +b *x  ~x, a=2, b=2)
dy1.dx <- D(a + b* x ~ x, a=2, b=2)
dy1.dx

但控制台显示

" dy1.dx <- D(a+b*x~x, a=2, b=2)
Error in D(a + b * x ~ x, a = 2, b = 2) : unused arguments (a = 2, b = 2)"

我该如何纠正?

2 个答案:

答案 0 :(得分:1)

使用基础R的stats包。无需安装其他软件包,例如mosaic

D将给出表达式的派生,因此使用expression()函数,我们创建一个表达式并将其传递给D函数。

然后eval将评估表达式,substitute将替换表达式中ab的值。

得到关于x的表达式的导数:

stats::D(expression(a + b * x), "x")
# b

在用导数中的值代替后评估表达式。 b替换为值2。

eval(substitute( stats::D(expression(a + b * x), "x"), list(a=2, b = 2) ))
# [1] 2

另一个例子:

stats::D(expression(a + a*b * x), "x")
# a * b
eval(substitute( D(expression(a + a*b * x), "x"), list(a=3, b = 2) ))
# 3 * 2
eval(eval(substitute( D(expression(a + a*b * x), "x"), list(a=3, b = 2) )))
# 6

答案 1 :(得分:0)

您的示例中使用的

D来自library(mosaicCalc),而不是来自基本统计信息。安装并调用该库。您的功能正常工作。

require(mosaicCalc)
#> Loading required package: mosaicCalc
#> Warning: package 'mosaicCalc' was built under R version 3.6.3
#> Loading required package: mosaicCore
#> Warning: package 'mosaicCore' was built under R version 3.6.3
#> Registered S3 method overwritten by 'mosaic':
#>   method                           from   
#>   fortify.SpatialPolygonsDataFrame ggplot2
#> 
#> Attaching package: 'mosaicCalc'
#> The following object is masked from 'package:stats':
#> 
#>     D
dy1.dx <- D(a + b * x ~ x, a = 2, b = 2)
dy1.dx
#> function (x, a = 2, b = 2) 
#> b