gpt4 book ai didi

r - 如何使用替换功能创建自定义分配?

转载 作者:行者123 更新时间:2023-12-04 22:15:34 24 4
gpt4 key购买 nike

我定义了一个名为 once 的函数,如下所示:

once <- function(x, value) {
xname <- deparse(substitute(x))
if(!exists(xname)) {
assign(xname, value, env=parent.frame())
}
invisible()
}

这个想法是 value 计算起来很耗时,我只想在我第一次运行脚本时将它分配给 x
> z
Error: object 'z' not found
> once(z, 3)
> z
[1] 3

我真的很喜欢使用 once(x) <- value 而不是 once(x, value) ,但是如果我编写一个函数 once<- ,它会因为变量不存在而感到不安:
> once(z) <- 3
Error in once(z) <- 3 : object 'z' not found

有没有人有办法解决这个问题?

ps:是否有一个名称来描述像 once<- 或一般的 f<- 之类的函数?

最佳答案

根据 R 语言引用中的 3.4.4 项,名称替换之类的评估如下:

 `*tmp*` <- x
x <- "names<-"(`*tmp*`, value=c("a","b"))
rm(`*tmp*`)

这对您的要求来说是个坏消息,因为分配将在第一行失败(因为找不到 x),即使它可以工作,您的 deparse(substitute) 调用也永远不会评估您想要的结果。

抱歉让你失望了

关于r - 如何使用替换功能创建自定义分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7509910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com