R: get(as.character(FUN), mode = "function", envir = envir) 错误:
R: Error in get(as.character(FUN), mode = "function", envir = envir) :
我正在使用 R。我正在尝试在此处复制此 Whosebug post 提供的答案:How can I plot 3D function in r?
使用 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)
但是这个returns出现以下错误:
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'input_3' of mode 'function' was not found
有人可以告诉我我做错了什么吗?
谢谢
其他参考资料:
- R: 4D plot, x, y, z, colours
- Draw a line after persp using rsm in R
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)))
或者可以用 dapply
从 collapse
加速
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))
-输出
我正在使用 R。我正在尝试在此处复制此 Whosebug post 提供的答案:How can I plot 3D function in r?
使用 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)
但是这个returns出现以下错误:
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'input_3' of mode 'function' was not found
有人可以告诉我我做错了什么吗?
谢谢
其他参考资料:
- R: 4D plot, x, y, z, colours
- Draw a line after persp using rsm in R
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)))
或者可以用 dapply
从 collapse
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))
-输出