我有一个功能
Trace.repair(dat, row.names)
执行此功能时,我会更改表格数据中的值。有没有办法更新数据而不做明显的
dat<-Trace.repair(dat, row.names){blah; blah; print(dat)}
答案 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”的变量。