试图在 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 <- 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函数更改已经创建的可视化结果