簡體   English   中英

漩渦“編程E”練習9:找不到function“func”

[英]Swirl "Programming E" exercise 9: could not find function "func"

使用swirl “編程 E”練習 9。

練習進度 55% 並嘗試使用 function:

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

不斷收到錯誤消息:

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

我假設您收到此錯誤消息是因為您沒有為evaluatefunc參數提供函數。 使用您的功能:

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

我也在漩渦中得到了這個錯誤。 如果我們確實在談論同一錯誤,那么這是產生錯誤的上下文和代碼:

| 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()向量。

我仍然收到 RStudio, 4.2.1 中的錯誤。 即使我復制粘貼@Ethan Polson 的答案。 如果我將 sd 切換為中位數,它會計算中位數,但在使用 sd 時會返回錯誤,請參見下面使用的代碼

評估(sd,c(1.4,3.6,7.9,8.8))func(dat)中的錯誤:找不到function“func”

評估(中位數,c(1.4,3.6,7.9,8.8))[1] 5.75

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM