R语言Swirl编程functions练习报错:调用evaluate提示找不到func
解决Swirl中evaluate函数调用报错的问题
报错Error in func(dat) : could not find function "func"的核心原因是Swirl练习环境对函数参数的作用域限制较严格,直接调用传入的函数对象会出现解析问题,以下是几种可行的解决办法:
- 先验证函数是否存在:输入
exists("evaluate")确认你定义的evaluate函数在当前环境中。如果返回FALSE,重新执行函数定义代码。 - 修改函数定义为使用
do.call:
之后调用evaluate <- function(func, dat){ do.call(func, list(dat)) }evaluate(sd, c(1.4, 3.6, 7.9, 8.8))即可正常计算标准差。 - 改用字符串传递函数名:
调用时传入函数名字符串:evaluate <- function(func, dat){ get(func)(dat) }evaluate("sd", c(1.4, 3.6, 7.9, 8.8)) - 重新在Swirl环境中定义函数:如果之前的定义没生效,退出当前练习步骤,重新输入函数定义代码,确保定义完成后立即执行调用命令。
内容的提问来源于stack exchange,提问作者alyosha
相关产品推荐
相关产品推荐

