在构造函数时我发现,在设置函数体时复数是不相交的:
funCplx <- function () {}
formals(funCplx) <- alist(t=)
body(funCplx) <- as.call(c(as.name("{"), parse(text = "t*(2+3i)")))
funCplx
funCplx(3)
如您所见,该函数返回正确的值,但包含t * (2+(0+3i))
. 它在c()
. 该表达式c(parse(text = "t*(2+3i)"))
返回不相交的项,而parse(text = "t*(2+3i)")
返回t*(2+3i)
. 为什么身体里的表情不连贯?
编辑:我向函数添加了一个参数。我因为稀疏而删除了它,但有必要获得正确的解决方案。
编辑2:大多数答案都假设我知道复数(这里2+3i
)。我举了这个例子,因为它是最小的。在我的真实案例中,我从变量矩阵中获取许多复数,并将它们放在一个带有附加变量(此处t
)和函数(如exp
. 在我的第一步中,我paste
将不同的部分和parse
此文本放入函数体中。
指出我的问题:parse
在计算步骤的情况下,复数在函数中不相交是不是很糟糕?5*(2+(0+3i))
改写:R 是否需要比更多的计算步骤来计算5*(2+3i)
?