sách gpt4 ai đã đi

r - 如何检索原始函数的形式?

In lại 作者:行者123 更新时间:2023-12-04 12:20:43 25 4
mua khóa gpt4 Nike

目前,至少,这对我来说是一个学习练习,因此实际功能或其复杂性不是问题。假设我编写了一个函数,它的参数列表包括一些输入变量和一个函数名,作为字符串传递。然后这个函数在内部计算一些变量并“决定”如何将它们提供给我传入的函数名称。

对于非原始函数,我可以这样做(对于这个例子,假设我的 funcname 函数中没有任何参数,除了最多 (x,y,z) 。如果他们这样做了,我必须写一些代码来搜索匹配的 names(formals(get(funcname)))以免删除其他参数):

foo <- function (a,b,funcname) {
x <- 2*a
y <- a+3*b
z <- -b
formals(get(funcname)) <- list(x=x, y=y, z=z)
bar <- get(funcname)()
return(bar)
}

好消息是,即使函数 funcname即使不使用 x 也不会出错, hoặc z (只要没有其他没有默认值的参数)。
“原始”函数的问题是我不知道找到或修改它们的形式的任何方法。除了编写包装器,例如 foosin <-function(x) sin(x) , 有没有办法设置我的 đồ ăn函数使用原始和非原始函数名称作为输入参数?

1 Câu trả lời

formals(args(FUN))可用于获取原始函数的形式。

您可以添加 nếu như对现有函数的声明。

> formals(sum)
# NULL
> foo2 <- function(x) {
if(is.primitive(x)) formals(args(x)) else formals(x)
## formals(if(is.primitive(x)) args(x) else x) is another option
}
> foo2(sum)
# $...
#
#
# $na.rm
# [1] FALSE
#
> foo2(with)
# $data
#
#
# $expr
#
#
# $...

关于r - 如何检索原始函数的形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25978301/

25 4 0
Bài viết được đề xuất: Hỗ trợ RStudio HiDPI
Bài viết được đề xuất: r - 如何将具有两列的数据框 reshape 为宽格式?
Bài viết được đề xuất: 正则表达式替换 R 中字符串的部分/组
Bài viết được đề xuất: scala - 带有Scala插件的IntelliJ IDEA找不到scala.concurrent
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com