在父环境中返回公式

问题描述

如果我有一个返回formula的R函数,它将绑定到该函数的作用域/环境。我该如何在函数 以便返回的公式不具有该环境属性

例如

myfun = function() {
    model = y ~ 1
    return(model)
}

结果:

> myfun()
# y ~ 1
# <environment: 0x000001ffd94eca50>

一种解决方案是在返回之前修改属性

myfun = function() {
    model = y ~ 1
    attr(model,".Environment") = globalenv()
    return(model)
}

但是这看起来很骇人,这真的是最好的方法吗?

解决方法

我可能会使用父级环境而不是全局环境

SDKConfig

这将在您调用它的地方创建环境,如果您始终喜欢全局环境,则async function createGame() { try { const newgame = { game_name: 'deneme',bundle_identifier: 'com.magiclab.deneme',}; const sdk = { publisher_id: null,facebook_app_id: 'fb12313',adjust_app_token: 'adjusttoken123123',}; const { data: { createGameConfig: { id: publisher_id },},} = await API.graphql( graphqlOperation(createGameConfig,{ input: newgame }) ); sdk.publisher_id = publisher_id; await API.graphql(graphqlOperation(createSDKConfig,{ input: sdk })); } catch (err) { console.log('error creating game sdk config:',err); } }位也可以。