在R中保留一个承诺

时间:2017-11-28 09:50:53

标签: r

基本上,我希望通过函数传递一个未触及的值。所以在下面的例子中(在Rstudio中):

example_function <- function(datain){
   as.environment("package:utils")$View(datain)
} 

我希望内部函数的行为好像我将原始对象传递给它,特别是因此,在View窗口中显示的名称将具有原始对象的名称(比如说X)而不是datain这是目前发生的事情。

2 个答案:

答案 0 :(得分:1)

使用deparse(substitute(datain)),您可以获得传递的参数的原始名称。

然后,为了完成你所要求的,你可以简单地做

example_function <- function(datain){
  as.environment("package:utils")$View(datain, deparse(substitute(datain)))
}  

现在,View窗口将根据需要正确标题。

然而请注意“我希望内部函数表现得好像我将它传递给原始对象”在R中不可能.R不支持pass-by-reference。有一些解决方法,但如果您只需要命名视图,上面的修复应该没问题。

答案 1 :(得分:0)

您也可以使用get

example_function <- function(datain){
  as.environment("package:utils")$View(get(datain),datain)
}

在这种情况下,您不能将变量传递给变量,而是将变量的名称作为字符串传递。

example_function("X")