【发布时间】:2021-01-27 18:57:57
【问题描述】:
我制作了一个增广系数矩阵函数来求解线性方程组,并且在使用deparse() 函数在 R 中解析函数时遇到了一些不一致的问题。
输入:
yield4 <- function(x1,x2,x3,x4,x5) 153.7 * x1 + 94.2 * x2 + 79.5 * x3 + 200 * x4 + 200 * x5 + -298.3
yield5 <- function(x1,x2,x3,x4,x5) 144.2 * x1 + 91.5 * x2 + 78.2 * x3 + 137.3 * x4 + 200 * x5 + -288.7
deparse(yield4)
deparse(yield5)
输出:
> deparse(yield4)
[1] "function (x1, x2, x3, x4, x5) "
[2] "153.7 * x1 + 94.2 * x2 + 79.5 * x3 + 200 * x4 + 200 * x5 + -298.3"
> deparse(yield5)
[1] "function (x1, x2, x3, x4, x5) "
[2] "144.2 * x1 + 91.5 * x2 + 78.2 * x3 + 137.3 * x4 + 200 * x5 + "
[3] " -288.7"
如您所见,每当我运行该脚本时,由于某种原因,解析 yield5 会返回一个包含 3 个元素的字符,其中解析其他函数只会产生 2 个元素。这破坏了我为 AugCoeffMatrix 创建的程序。有人知道为什么 R 会这样做吗?
我已经尝试过以下方法:
- 重写函数(相同问题)
- 更改函数名称(相同问题)
- 删除了所有功能空间(相同问题)
- 添加了花括号(相同问题)
- 更改常量值(相同问题)
- 更改了最后一个符号运算符(相同问题)
编辑:将函数参数的 width.cutoff 调整为更高的整数值修复了该问题。
【问题讨论】:
-
试试这个:
deparse(yield5, width.cutoff = 100L) -
deparse(yield5, width.cutoff = 500)但您可能应该计算语言而不是解析。 -
@DaveCordero 请注意,这并不是真正的修复。如果您的函数体变宽,则会再次应用截止。
-
@Roland 是的,我很清楚。我可以更改函数以允许超过 2 个字符元素作为参数,但我认为这个解决方案已经在我们的教授希望我们提供的范围内。 (这首先不是解决线性方程组的实用方法)
-
我相当怀疑“在现实生活中”在这里做
deparse不是一个好方法。改用formals和body怎么样?也就是说,“你要解决的问题是什么?”问那个而不是问为什么特定方法有问题