gpt4 book ai didi

r - 从头开始制作 R promise 对象(懒惰评估)

转载 作者:行者123 更新时间:2023-12-04 07:02:10 25 4
gpt4 key购买 nike

我想从不同的文本文件中延迟读取数据,类似于数据集的延迟加载(例如,在 R 中键入 iris 延迟加载来自 datasets 包中的数据集)。这里的区别在于我想要一个 R expression每当某些变量(这里我使用 x )被输入到 R 控制台或被其他代码使用时运行。

# The expression that I want run if the variable x is called by some other code
expn = quote( {x = read.table(text = "a b \n 1 2", header=TRUE)} )

# When I type this, I want the language object 'expn' to be evaluated
# (e.g. eval(expn)) so that the variable x now exists
x

有没有办法用 R promise 对象来做到这一点?我必须创建一个 R 包才能获得这种行为吗?

最佳答案

您正在寻找 delayedAssign .

delayedAssign('x', read.table(text = "a b  \n 1 2", header=TRUE))

可以看到表达式在 x 时执行首先请求:
delayedAssign('x', {
message('assigning')
read.table(text = "a b \n 1 2", header=TRUE)
})
x
# assigning
# a b
# 1 1 2

关于r - 从头开始制作 R promise 对象(懒惰评估),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154425/

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