旋流“编程E”练习9:找不到功能“func”

时间:2018-02-13 23:15:09

标签: function func evaluate swirl

使用swirl“编程E”练习9.

练习55%的进展并尝试使用该功能:

evaluate <- function(func, dat){
 func(dat)
}

继续收到错误消息:

  

Error in func(dat) : could not find function "func"

2 个答案:

答案 0 :(得分:1)

我也在漩涡中遇到了这个错误。 如果我们确实在谈论相同的错误,则这是产生错误的上下文和代码:

| Let's take your new evaluate() function for a spin! Use evaluate to find the
| standard deviation of the vector c(1.4, 3.6, 7.9, 8.8).
> evaluate(c(1.4,3.6,7.9,8.8))
Error in func(dat) : could not find function "func"

对于仍在学习的人来说,不是那么明显的错误是这没有提供要使用的功能。由于“ func”本身并不是一个实际的函数,因此我们需要提供该函数(标准差)以用于评估函数。以下是我在本练习中使用的方法,即sd为标准偏差函数,以获取所需的结果并继续上课:

> evaluate(sd,c(1.4,3.6,7.9,8.8))
[1] 3.514138
| Perseverance, that's the answer.

这从我们的validate()函数中为“ func”提供了函数sd(),为“ dat”提供了c()向量。

答案 1 :(得分:0)

我假设您收到此错误消息,因为您没有向func中的evaluate参数提供函数。使用你的功能:

evaluate <- function(func, dat) {
  func(dat)
}

我们可以通过赋予func参数除函数之外的任何内容来重现错误消息:

evaluate(1, 2)
  

Error in func(dat) : could not find function "func"

但是,如果我们提供功能,evaluate应该有效:

evaluate(function(x) {x + 1}, c(1, 2))

# [1] 2 3

或者使其更明确:

evaluate(func = function(x) {x + 1},
         dat = c(1, 2))

# [1] 2 3