试图在 R 中定义一个函数,但结果却是对象

Posted

技术标签:

【中文标题】试图在 R 中定义一个函数,但结果却是对象【英文标题】:Trying to define a function in R but it turns out to be object instead 【发布时间】:2022-01-22 01:27:39 【问题描述】:

我是一名正在学习 R 的学生,我的讲师从其中一个笔记本中给我一个作业,问题如下:

我们之前以这种方式定义了通用幂函数以及实例正方形和立方体:

power <- function(n) function(x) x^n
square <- power(2)
cube <- power(3)

如果你改为定义这个:

power <- function(x, n) x^n

你会如何定义正方形和立方体?

在第一个例子中,幂、平方和立方都会变成一个函数,可以计算一个向量

x= (1,2,3,4,5) 我尝试使用各种代码组合解决问题,例如

square=power(x,2) # it works, but it creates 'square' as an  object of x^2 instead of being a function,
square=power(,2) # telling me that x has to be defined and cant be empty
square= power(2) # I know it wouldn't work and it says n has to be defined which is... not a surprise

这本书没有给出任何例子,我基本上不知道如何重新定义这个函数,所以任何帮助都将不胜感激,感谢您的关注!

【问题讨论】:

【参考方案1】:

给定power &lt;- function(x, n) x^n,你应该像下面这样定义square

square <- function(x) power(x, 2)

【讨论】:

谢谢它的工作!【参考方案2】:
power <- function(x, n) x^n

square <- function(x) power(x, 2)
cube <- function(x) power(x, 3)

square(3) # 9
cube(3)   # 27

给定x的以下定义:

x = c(1,2,3,4,5)

你可以跑

> square(x)
[1]  1  4  9 16 25

您将收到一个数字向量。如果你这样做了

square = power(x, 2)

您会收到相同的结果。在第一个示例中,square 是一个函数。在第二个示例中,square 是一个结果向量。

【讨论】:

谢谢它有效,你能指出为什么我也必须包含函数 (x) 吗?它只是你用来告诉 R 将 square 变成函数而不是对象的东西吗? function(x) 定义了一个函数。没有它,你只需执行一次power(x, 1),用它 - 你创建一个接受参数的函数 我明白了...感谢您的帮助,祝您有美好的一天,先生 欢迎来到社区@ferdinandfisrandapbicez,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。

以上是关于试图在 R 中定义一个函数,但结果却是对象的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:修改已经创建的ggplot2可视化对象进行自定义的修改使用ggplot_build函数更改已经创建的可视化结果

在python中调用mysql存储过程并将结果写入csv文件

使用R打印环境

无法使用 R Shiny 显示统计测试的结果

NestJS - 在构造函数中未定义注入的服务

在每个循环的R-in中自动创建和使用自定义函数 - 将结果存储在一个DF-3D阵列中