返回已更改数据的函数

时间:2016-01-07 03:56:24

标签: r

我有一个功能

Trace.repair(dat, row.names)

执行此功能时,我会更改表格数据中的值。有没有办法更新数据而不做明显的

dat<-Trace.repair(dat, row.names){blah; blah; print(dat)}

1 个答案:

答案 0 :(得分:1)

使用assign。像这样:

Trace.repair <- function(x) {
     # do tricks with x
  assign("dat", x, envir=parent.frame())
}

这假设您总是希望在调用环境中更改变量“dat”。如果您希望将结果分配给与您调用的名称相同的变量(例如Trace.repair(another_dat)),则可以as.character(sys.call()[2])恢复变量名称,并在代码中替换"dat"的是:

Trace.repair <- function(x) {
     # do tricks with x
   assign(as.character(sys.call()[2]), x, envir=parent.frame())
}

但是,如果您不使用显式变量名称调用它,而是使用类似Trace.repair(-dat)的名称,那么您将在环境中获得名为“-dat”的变量。