我被要求在uni的一个新讲座中使用/学习R,目前我正在努力学习它的语法.我想(通过curve)绘制一个简单的函数,但我似乎无法让它与一个类似于lambda的内联函数一起工作.

我试过以下方法:

> curve( function(x) x^2 )
Error in curve(function(x) x^2) : 
  'expr' did not evaluate to an object of length 'n'

然而,当我首先将函数存储在变量中时,它会起作用:

> quad <- function(x) x^2
> curve( quad )

在R中不允许这样的内联使用吗?有没有其他方法可以在不定义额外功能的情况下实现这一点?谢谢

推荐答案

您必须查看curve的来源才能了解发生了什么(只需在提示符处键入curve并按enter键).

在这里,您可以找到如何解析传递的表达式.

发现函数的唯一方法就是只传递其名称(参见第is.name部分).如果不是这样,则每x次调用一次表达式.在你的例子中:对于每x个,结果是一个函数,这不是一个愉快的 idea 来绘制...

简而言之:不,你不能做你try 过的事情,但是正如@ROLO所指出的,你可以立即传递函数体,它将被解析为一个表达式(应该包含x).如果这包含多个语句,只需将它们用大括号括起来.

R相关问答推荐

从载体创建 pyramid

按块将载体转换为矩阵-reshape

使用lapply的重新定位功能

检测(并替换)字符串中的数学符号

寻找图片边缘

R等效于LABpascal(n,1)不同的列符号

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

找出疾病消失的受试者

R:连接值,而不是变量?

如何在R中合并和合并多个rabrame?

将数据集中的值增加到当前包含的最大值

线性模型斜率在减少原始数据时提供NA

如何指定我的函数应该查找哪个引用表?

如何在R中通过多个变量创建交叉表?

基于数据集属性将科分配给物种

扩展R中包含列表的数据框

我如何使用tidyselect来传递一个符号数组,比如Pivot_Long?

如何使用字符串从重复的模式中提取多个数字?

如何根据未知数的多列排除重复行

按组使用dummy r获取高于标准的行的平均值