BERT R脚本,环境和范围是如何工作的?

BERT R脚本,环境和范围是如何工作的?,r,excel,environment-variables,scoping,bert-toolkit,R,Excel,Environment Variables,Scoping,Bert Toolkit,我在理解BERT如何处理R环境时遇到了一些问题。理想情况下,我希望能够通过VBA运行一个R脚本,类似于VBA Sub。我不认为BERT有助于实现这一点 当我在BERT控制台中运行以下R脚本时: controls_sheet <- EXCEL$Application$get_Sheets()$get_Item('Sheet1') some_vec <- 1:5 controls_sheet$get_Range('A1:A5')$put_Value(some_vec); # print

我在理解BERT如何处理R环境时遇到了一些问题。理想情况下,我希望能够通过VBA运行一个R脚本,类似于VBA Sub。我不认为BERT有助于实现这一点

当我在BERT控制台中运行以下R脚本时:

controls_sheet <- EXCEL$Application$get_Sheets()$get_Item('Sheet1')
some_vec <- 1:5
controls_sheet$get_Range('A1:A5')$put_Value(some_vec); # print results to sheet

这实际上是一个上下文问题。无论您使用的是COM还是Excel API,都无法从其他单元格设置单元格值

不知道为什么你在shell中没有得到关于这个的错误

您需要从不同的上下文中执行此操作,例如从BERT控制台或VBA函数:

subx()
应用程序。运行“BERT.Call.R”、“test\u fun”、“Sheet1”
端接头

谢谢你@duncan。我还得弄清楚事情是怎么回事。我们可以使用工作表范围和同一工作表中的R.函数调用来更新图像,因此我认为该方法类似。我不知道实际原因,但我的假设是,不允许从另一个单元格更改一个单元格的值,因为这会破坏计算树,并可能引入循环依赖关系。
test_fun <- function(sheet = 'Sheet1'){
    controls_sheet <- EXCEL$Application$get_Sheets()$get_Item(sheet)
    some_vec2 <- 1:5
    controls_sheet$get_Range('A1:A5')$put_Value(some_vec2); # print results to sheet
}