[英]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"
我假設您收到此錯誤消息是因為您沒有為evaluate
的func
參數提供函數。 使用您的功能:
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.