簡體   English   中英

R: get(as.character(FUN), mode = “function”, envir = envir) 中的錯誤:

[英]R: Error in get(as.character(FUN), mode = “function”, envir = envir) :

我正在與 R 一起工作。我試圖在這里復制此 stackoverflow 帖子中提供的答案: 如何在 r 中繪制 3D 函數?

使用 R 中的“lattice”庫,我試圖創建“input_1”、“input_2”、“input_3”的 3D 曲面圖 - 並根據“final_value”的值為曲面着色。

我為這個問題創建了一個函數:

my_function_b <- function(input_1, input_2, input_3, input_4) {
    
    final_value = sin(input_1) + cos(input_2) + input_3 + input_4
    
}

然后,我為這個函數的每個“輸入”分配了一系列值:

input_1 <- seq(-10, 10, length= 30)
input_2 <- input_1
input_3 <- input_1
input_4 <- input_1

接下來,我嘗試使用“外部”功能:

z <- outer(input_1, input_2, input_3, my_function_b)

但這會返回以下錯誤:

Error in get(as.character(FUN), mode = "function", envir = envir) : 
  object 'input_3' of mode 'function' was not found

有人可以告訴我我做錯了什么嗎?

謝謝

其他參考資料:

outer只接受兩個參數。 我們可能需要pmap

library(purrr)
pmap_dbl(list(input_1, input_2, input_3, input_4), my_function_b)

Map/mapply

mapply(my_function_b, input_1, input_2, input_3, input_4)

如果我們需要所有組合,請使用expand.grid創建組合並應用於行

tmp <- expand.grid(input_1 = input_1, input_2 = input_2, 
     input_3 = input_3, input_4 = input_4)
out <- apply(tmp, 1, 
       FUN = function(x) do.call(my_function_b, as.list(x)))

或者可能會通過dapplycollapse加速

library(collapse)

out1 <- dapply(tmp, MARGIN = 1, FUN = function(x) 
            my_function_b(x[1], x[2], x[3], x[4]))

也許,我們在兩個向量上創建組合,然后添加 ?

my_function_b <- function(input_1, input_2) sin(input_1) + cos(input_2)
tmp1 <- outer(input_1, input_2, my_function_b)
z <- tmp1 + input_3[col(tmp1)] + input_4[col(tmp1)]
library(lattice)
wireframe(z, drape=TRUE, col.regions=rainbow(100))

-輸出

在此處輸入圖片說明

暫無
暫無

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

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